工厂方法模式

2022-10-11  本文已影响0人  筱湮

1. 定义

  • Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.
  • 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类

2. 优点

3. 使用场景

工厂方法模式是new一个对象的替代品,所以在所有需要生成对象的地方都可以使用,但是需要慎重地考虑是否要增加一个工厂类进行管理,增加代码的复杂度

4. 工厂方法模式的扩展

工厂方法模式有很多扩展,而且与其他模式结合使用威力更大 。

4.1 缩小为简单工厂模式(Simple Factory Pattern)

该模式是工厂方法模式的弱化,也叫静态工厂模式

将工厂方法模式中的抽象工厂类去掉,然后工厂的实现类中把创建对象的方法改为静态方法(方法前加static)。

在实际项目中,采用该方法的案例还是比较多的,其缺点是工厂类的扩展比较困难,不符合开闭原则,但它仍然是一个非常实用的设计模式。

4.2 升级为多个工厂类

注意 抽象方法中已经不再需要传递相关参数了,因为每一个具体的工厂都已经非常明确自己的职责:创建自己负责的产品类对象。

当然,在复杂的应用中一般采用多工厂的方法,然后再增加一个协调类,避免调用者与各个子工厂交流,协调类的作用是封装子工厂类,对高层模块提供统一的访问接口**。

4.3 替代单例模式

4.4 延迟初始化(Lazy initialization)

一个对象被消费完毕后,并不立刻释放,工厂类保持其初始状态,等待再次被使用。延迟初始化是工厂方法模式的一个扩展应用。

通过定义一个Map容器,容纳所有产生的对象,如果在Map容器中已经有的对象,则直接取出返回;如果没有,则根据需要的类型产生一个对象并放入到Map容器中,以方便下次调用。

最后附一张思维导图:

工厂方法模式.png
上一篇 下一篇

猜你喜欢

热点阅读