设计模式 —— 工厂模式

工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。说的通俗一点吧,就是把将工厂类抽象成接口,具体的代工厂去实现此接口,同时把产品类也抽象成接口,再构造具体的产品去实现些接口。

 

案例:

创建不同类型的灯泡

 

工厂模式与建造者模式的类似。但是还是有一些区别的。

  1. 建造模式侧重于“装配”、“拼装”…而工厂侧重于“生产”
  2. 建造模式的导演,很清楚产生的步骤,因为他把握这生产者的接口(知道生产步骤)而工厂,却不知道,他只知道自己产出产品
  3. 建造模式屏蔽的是“装配”的细节,工厂模式则是屏蔽“构造”的细节…(有点晕其实)

建造模式,适用的范围是:

1)当产品对象非常复杂,无法一步到位生产,需要有N个部件拼合才能成行,但是步骤是固定的(重点),不过部件的属性可能不一样(内部表象不一样)

2)产品里面的需要填充的属性,比较难取得,需要另外的生产者进行生产才行,概括起来说就是,建造模式是当产品比较复杂(不能一下子完成),而且生产步骤已经稳定,但是同一个步骤 产出的“部件”可能属性不一样!这时候使用建造者模式最好

 

另一个角度说,建造模式比工厂模式“宏观”,建造模式里面的生产者可以是工厂模式!