抽象工厂和工厂方法的区别:
抽象工厂:
通过对象组合创建抽象产品
创建多系列产品
必须修改父类的接口才能支持新的产品
工厂方法:
通过类继承创建抽象产品
创建一种产品
子类化创建者并重载工厂方法以创建新的产品
通常,设计开始时使用工厂方法(不那么复杂,更可定制,子类激增),并随着设计师发现需要更多灵活性的地方而向抽象工厂、原型或构建器(更灵活、更复杂)发展
原型模式不需要子类化,但是它需要“初始化”操作。工厂方法需要子类化,但不需要初始化。