• 简单工厂模式( Simple Factory Pattern )


    简单工厂模式(Simple Factory Pattern),在工厂类中对象决定创建出哪一种产品类的实例。这些产品类都实现了相同的接口,或者继承了相同的父类。

    结构图

    • Factory工厂角色):它是核心,负责实现创建所有实例的内部逻辑。在工厂类中,提供了一个静态方法,可以直接被外界直接调用,以创建具体产品对象。
    • Product抽象产品角色):具体产品对象的父类或者接口,具体产品对象都是其子类对象。
    • ConcreteProduct具体产品类):它是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。

    简单工厂代码

    抽象产品角色

    public abstract class Operation {
        /**
         * 获取两个数运算后的值
         *
         * @param numA 第一个数
         * @param numB 第二个数
         * @return 结果
         */
        public abstract double getResult(double numA, double numB);
    }
    

    具体产品类,包括加法、减法、乘法、除法四个运算的具体实现

    public class Add extends Operation {
        @Override
        public double getResult(double numA, double numB) {
            return numA + numB;
        }
    }
    
    public class Sub extends Operation {
        @Override
        public double getResult(double numA, double numB) {
            return numA - numB;
        }
    }
    
    public class Mul extends Operation {
        @Override
        public double getResult(double numA, double numB) {
            return numA * numB;
        }
    }
    
    public class Div extends Operation {
        @Override
        public double getResult(double numA, double numB) {
            if (numB == 0) {
                System.out.println("除数不能为0");
            }
            return numA / numB;
        }
    }
    

    工厂类

    public class OperationFactory {
        public static Operation createOperation(String operate) {
            Operation operation = null;
            switch (operate) {
                case "+":
                    operation = new Add();
                    break;
                case "-":
                    operation = new Sub();
                    break;
                case "*":
                    operation = new Mul();
                    break;
                case "/":
                    operation = new Div();
                    break;
    
            }
            return operation;
        }
    }
    

    客户端

    class Client {
        public static void main(String[] args) {
            Operation operation = OperationFactory.createOperation("+");
            operation.getResult(1, 1);
        }
    }
    
  • 相关阅读:
    Javascript知识【基础语法】
    【云原生】Spark on k8s 讲解与实战操作
    使用逻辑分析仪处理IIC信号
    java毕业设计采购系统mybatis+源码+调试部署+系统+数据库+lw
    22-07-29 西安 分布式事务、Seata
    Pandas数据分析15——pandas数据透视表和交叉表
    趣味算法-神奇的兔子数列
    快速上手 git
    【C++】哈希位图和布隆过滤器
    java计算机毕业设计水果商城设计源码+系统+mysql数据库+lw文档+部署
  • 原文地址:https://www.cnblogs.com/cavan2021/p/18239417