02-简单工厂模式(静态工厂模式)
- 属于类的创建型模式
- 可以根据参数的不同返回不同的实例
-
专门定义了一个类来负责创建其他类的实例,被创建的实例通常具有相同的父类。
类图:
优点:
实现了类的创建和使用的分离
缺点:
不够灵活,一旦有了新的“产品”,就需要修改工厂类的代码。
03-工厂(方法)模式
在
02-简单工厂模式(静态工厂模式)
下,工厂类处于产品实例化的中心位置。
1、需要知道产品类的具体实现细节
2、并决定何时实例化哪一个产品类
导致了只要有新产品的出现就必须修改这个工厂类。
开闭原则
程序应对于扩展时开放的,对于修改是封闭的。
工厂(方法)模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使得一个类的实例化延迟到其子类。
04-抽象工厂模式
03-工厂(方法)模式
下,新增一个产品必须新增一个与其对应的工厂类
1、每一个具体工厂都负责身长一种对应的具体产品。
2、工厂模式要求这些产品都属于同一大类(即有相同的父类或实现同一接口)
工厂模式下只能生产一个大类的产品。
但新增一个大类的产品时,又不得不修改抽象工厂的代码。
违反“开闭原则”,即扩展性和可用性只能二选一。