简单工厂模式( 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);
    }
}
posted @ 2024-06-09 19:38  cavan丶keke  阅读(17)  评论(0编辑  收藏  举报