工厂模式简介
工厂模式(Factory Pattern)是常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
工厂模式一般可以分为三种:简单工厂模式、工厂方法模式、抽象工厂模式
为什么要使用工厂模式
- 解耦;在某些业务需求中,A使用到B的方法,但是并不关心B的初始化过程;
- 减少代码冗余;某些对象的创建的步骤较多,创建的地方也很多,所以有很多重复的代码;
- 降低代码维护成本;创建对象的方法比较独立;即便后续有改动,也没有影响;如果有新增的对象,也只需要在工厂中添加对应的初始化即可;
简单工厂模式
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类
抽象类或接口:定义需要创建的产品对象的接口。
具体实现类:具有统一父类的具体类型的产品。
产品工厂:创建产品对象。工厂模式同样体现了开闭原则,将“创建具体的产品实现类”这部分变化的代码从不变化的代码“使用产品”中分离出来,之后想要新增产品时,只需要扩展工厂的实现即可。
工厂方法模式
工厂方法使一个类的实例化延迟到其子类
抽象工厂:声明了工厂方法的接口。
具体产品工厂:实现工厂方法的接口,负责创建产品对象。
产品抽象类或接口:定义工厂方法所创建的产品对象的接口。
具体产品实现:具有统一父类的具体类型的产品。
抽象工厂模式
为创建一组相关或相依赖的对象提供一个接口,而无需制定他们具体类
抽象工厂:声明了创建抽象产品对象的操作接口。
具体产品工厂:实现了抽象工厂的接口,负责创建产品对象。
产品抽象类或接口:定义一类产品对象的接口。
具体产品实现:定义一个将被相应具体工厂创建的产品对象。
总结
实际上,一般开发过程中,我们使用简单工厂模式比较多,抽象工厂模式的话需要业务比较大的情况下才会用到;以下是三种的对比;
简单工厂:唯一工厂类,一个产品抽象类,工厂类的创建方法依据入参判断并创建具体产品对象
工厂方法:多个工厂类,一个产品抽象类,利用多态创建不同的产品对象,避免了大量的if-else判断
抽象工厂:多个工厂类,多个产品抽象类,产品子类分组,同一个工厂实现类创建同组中的不同产品,减少了工厂子类的数量
结尾:欢迎关注我的简书!您的鼓励是我最大动力!