1.1 简单工厂
1.1.1 简单工厂与其他模式的关系
其他模式 | 说明 |
Ø 单例模式 | 1. 单例模式使用了简单工厂模式 2. 但单例模式不是简单工厂的退化情形 3. 单例类是自己负责创建自身的实例,工厂模式则不全是 |
Ø 多例模式 | 1. 多例模式是对单例模式的推广 2. 多例模式禁止外界直接将之实例化 |
1.1.2 简单工厂模式的优点
Ø 模式的核心是工厂类
Ø 工厂类可以决定什么时候创建哪一个类,客户端仅仅负责“消费”产品
Ø 简单工厂通过这种做法实现了对责任的分割
1.1.3 简单工厂模式的缺点
Ø 当产品类有复杂的多层次等级结构时,工厂类只有它们自己,当这个类出现问题时,会影响到所有类。
Ø 另外一个缺点是,当产品类有不同的接口种类时,工厂类需要判断在什么时候创建某种产品。使得系统进行功能扩展时,较困难。
Ø 由于简单工厂模式使静态方法作为工厂方法,而静态方法无法由子类继承,因此,工厂角色无法形成基于继承的等级结构。
1.1.4 “开-闭”原则
部分附合“开-闭”原则。工厂角色不附合“开-闭”原则。
1.1.5 简单工厂模式在Java中的应用
Ø java.text.DateFormat
在getDateInstance()时,会返回一个具体的java.text.SimpleDateFo实例对像.
Ø SAX2库中的XMLReaderFactory与简单工厂模式
会通过静态createXMLReader方法来创建一个XMLReader实例对象
1.1.6 女娲抟土造人
《风俗通》中说“俗说天地开辟,未有人发。女娲抟黄土为人。”,这就是一个简单工厂模式的应用。
Ø 女娲是一个工厂,也就是工厂核角色。
Ø 具体的一个个的人,也就是具体产品角色
Ø 抽象是女娲脑中的想法,也就是接口定义