设计模式-简单工厂

简单工厂模式是一个集中管理对象创建,并根据条件生成所需类型对象的设计模式,有助于提高代码的复用性和维护性,但可能会导致工厂类过于复杂且违反开闭原则。

抽象提取理论:

  1. 封装对象创建过程
  2. 解耦客户端与产品类
  3. 控制程序扩展性

代码需求:需要实现一个计算器功能,输入运算符号和两个数字进行计算。你应该如何实现呢?

简单工厂实现

代码结构图

设计模式-简单工厂-LMLPHP

  • 基类:运算类
  • 实现类:加法类,乘法类,减法类,除法类
  • 工厂类:简单工厂类

基于代码结构图实现代码,以下代码只创建两个实现类。

基类:

/**
 * 运算类-基类
 */
public abstract class Operation {
    /**
     * 计算方法
     */
    abstract double getResult(double num1,double num2);
}

实现类-加法:

public class Addition extends Operation{
    @Override
    double getResult(double num1, double num2) {
        return num1 +  num2;
    }
}

实现类-减法:

public class Subtraction extends Operation{
    @Override
    double getResult(double num1, double num2) {
        return num1 - num2;
    }
}

工厂类:

public class Factory {
    public Operation createOperate(String str){
        switch (str){
            case "+":
                return new Addition();
            case "-":
                return new Subtraction();
            default:
                return null;
        }
    }
}

客户类:

public class FactoryDemo {
    public static void main(String[] args) {
        // 创建工厂
        Factory factory = new Factory();

        Operation operate = factory.createOperate("+");
        System.out.println("加法计算结果:" + operate.getResult(10, 10));

        Operation operate2 = factory.createOperate("-");
        System.out.println("减法计算结果:" + operate2.getResult(10, 10));
    }
}
01-18 09:06