含义
官方:定义一个用于创建对象的接口,让子类决定实例化哪一个类。
白话:建设一个工厂,客户需要什么产品,工厂都可以对应生产,而不需要关心生产过程。
UML类图
实现方式
以鞋厂生产不同类型的鞋子为例:
抽象产品类
|
|
具体的产品类
继承于抽象产品类。
|
|
抽象的工厂类
负责定义产品对象的产生。
|
|
具体的工厂类
负责如何具体生产一个产品对象。
|
|
场景类
|
|
简单工厂模式(静态工厂模式)
将上述抽象工厂类ShoesFactory
去掉,然后将具体工厂类ChineseShoesFactory
中的createShoes
修改为静态方法,其余保持不变,这就是简单工厂模式。当模块仅需一个工厂类时,就不需要此处的抽象工厂类了,此时便可适用简单工厂模式。
|
|
Android中的典型使用
BitmapFactory
类就是一个比较常见的简单工厂模式
的工厂类。
总结
工厂方法模式是new一个对象的替代品,在所有需要生成对象的地方都可以使用,但是需要慎重地考虑是否要增加一个工厂类进行管理,增加代码的复杂度。
优点:良好的封装性,高层模块只需要知道产品的抽象类即可,降低了模块间的耦合。
缺点:增加了代码的复杂度。
鸣谢参考:《设计模式之禅》、《Android源码设计模式解析与实践》