定义一个用于创建对象的接口,让子类决定实例化哪一个类。
// 类图内容
- 当一个类不知道它所必须创建的对象的类的时候
- 当一个类希望由它的子类来指定它所创建的对象的时候
- 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候
- 用户只需要关心产品对应的工厂,无须关心创建细节
- 加入新产品时,只需添加相应的具体产品类和相应的工厂子类,符合开闭原则
- 类的个数成倍增加,在一定程度上增加了系统的复杂度,会给系统带来一些额外的系统开销
- 引入了抽象层,增加了系统的抽象性和理解难度
// 示例代码