上一篇文章中我复习了代理模式,这篇文章我来回顾工厂方法模式。
工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法是一个类的实例化延迟到其子类。
提到了工厂模式,让我想起了之前提到过的简单工厂模式。二者都是通过将一个类的实例化托管给一个工厂来延迟复杂的类实例化。以此来将类的实例化过程隔离开来,减少调用者和被调用者之间的耦合度。二者的差异在于选择逻辑的存放位置,简单工厂存放在工厂类中这会违反开放封闭原则,工厂方法将选择的逻辑托管给客户端,符合开放封闭原则,同时也是对简单工厂模式的进一步抽象,剥离工厂类的职责,让其只负责实例化所属的对象,符合单一职责原则。
通过对而这属性的比较发现,简单工厂模式比较适用于选择逻辑简单稳定的场景,工厂方法模式更加倾向于选择逻辑多变的场景。情况类似不做过多解释。