在开始说工厂模式之前先说说面向对象。

面向对象有三大特性:封装、继承、多态。

面向对象的好处

1、面向对象的封装思想可以减低代码的耦合度,使程序更加灵活,容易修改,并且易于复用。编程应该尽可能的去避免重复,否则越大的系统,维护成本会越高。
2、为了 方便维护管理,应该把业务逻辑代码和功能代码分开,减低它们之间的耦合度,菜可以达到容易维护和扩展。

简单工厂模式

简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。
简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。
简单工厂模式是一种对象创建型模式 。但是简单工厂模式不属于23种Gof设计模式之一。

Product (Operation) : 产品角色,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

// Product角色,所有实例所共有的公共接口
abstract class Operation {
    public int numA;
    public int numB;
    public abstract int GetResult();
}

ConcreteProduct组 : 具体产品角色,实现 Product 中的接口。

// 工厂角色,简单工厂模式的核心,它负责实现创建所有实例的内部逻辑

class OperationFactory {

    public static Operation CreateOperation (char operate) {

        Operation oper = null;

        switch(operate) {

        case '+':

            oper = new Add();

            break;

        case '-':

            oper = new Sub();

            break;

        case '*':

            oper = new Mul();

            break;

        case '/':

            oper = new Div();

            break;

        default:

            break;

        }

        return oper;

    }

}

测试代码

public class SimpleFactoryPattern {
    public static void main(String[] args) {
        int numA = 10;
        int numB = 3;
        int result = 0;
        Operation oper = OperationFactory.CreateOperation('+');
        oper.numA = numA;
        oper.numB = numB;
        result = oper.GetResult();
        System.out.println(numA + " + " + numB + " = " + result);
    }
}
优点

简单工厂模式的工厂类是整个模式的关键。其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类的对象。
通过使用简单工厂模式,用户无需了解对象如何创建的,只要传入必要信息就可以了。

缺点

工厂类集中了所有实例的创建逻辑,违背了高内聚责任分配原则。
随着系统中具体产品类不断增多,势必要不断修改工厂类,不易维护和扩展。同时,这也违背了开放封闭原则。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐