工厂就是给定一个参数,返回参数对应的类的实例,工厂能够将对象的创建和使用分离。
通常,工厂返回的类总有一个公共的父类。(why?)
类的实例化交由工厂实现,外部无需关注其细节。
简单工厂的结构与实现
简单工厂模式结构
- Factory(工厂角色): 工厂角色即工厂类,负责创建产品实例的内部逻辑,其方法应该能被外界直接调用,所以通常被声明为静态方法,而这些方法的返回类型通常为抽象的产品类型。
- Product(产品角色): 是工厂创建的所有对象的父类,封装了所有对象的公有方法。
- ConcreteProduct(具体产品角色): 它是简单工厂模式的创建目标,所有被创建的对象都是这个类的的实例,而这个类继承了Product类。
简单工厂模式实现
简单工厂模式优/缺点与适用环境
优点
- 包含必要的判断逻辑,可以决定什么时候创建哪一个产品的实例。实现了对象创建和使用的分离。
- 创建对象时,无需给出类名,只要直到对应的参数,而这个参数可以写成枚举类型,更加方便,减少及一辆。
- 通过引入配置文件,可以在不修改代码的情况下更换、增加产品类,提高了系统的灵活性。。
缺点
- 集中了所有产品的创建逻辑,职责过重。
- 增加了类的个数、增加了系统的复杂度和可读性。
- 扩展困难,一旦添加新产品时就要修改工厂逻辑,产品较多时不利于维护。
简单工厂模式适用环境
可以考虑在以下情况适用工厂模式:
- 工厂负责创建的对象比较少。
- 客户端只知道传入工厂类的参数,或者说客户端只要一个实例化的结果,对于如何创建并不关心。
1561

被折叠的 条评论
为什么被折叠?



