工厂方法模式:
工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。
工厂方法模式建议使用特殊的工厂方法代替对于对象构造函数的直接调用 (即使用 new运算符)。 但对象仍将通过 new运算符创建, 只是该运算符改在工厂方法中调用。 工厂方法返回的对象通常被称作 “产品”,于是可以在子类中重写工厂方法, 从而改变其创建产品的类型
优点:
避免创建者和具体产品之间的紧密耦合。
单一职责原则:将产品创建代码放在程序的单一位置, 从而使得代码更容易维护。
开闭原则:无需更改现有客户端代码, 可以在程序中引入新的产品类型
抽象工厂模式:
抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。
首先,抽象工厂模式建议为系列中的每件产品明确声明接口 。 然后, 确保所有产品变体都继承这些接口。然后需要声明抽象工厂,包含系列中所有产品构造方法的接口。这些方法必须返回抽象产品类型
优点:
可以确保同一工厂生成的产品相互匹配。
可以避免客户端和具体产品代码的耦合。
单一职责原则: 可以将产品生成代码抽取到同一位置, 使得代码易于维护。
开闭原则:向应用程序中引入新产品变体时, 无需修改客户端代码。