建造者模式
建造者模式与工厂模式关注点不同,建造者模式关注零件的组装过程,工厂模式注重零件的创建过程。
定义
建造者模式也叫生成器模式, 它将一个复杂对象的构建与它的表示分离,使得同样的建造构建过程可以创建不同的表示。

优点
- 封装性良好
使用建造者模式可以使得客户端不需要知道产品内部组成的细节。
- 建造者独立,易扩展
不同的实现类Builder是相互独立的,对系统的扩展有利。
- 便于控制细节风险
由于建造者独立,因此可以个性化,修改一个建造者不会对其他模块产生影响。
缺点
- 产品的组成部分必须相同,限制了其使用范围
- 产品内部变化复杂时,需要增加很多建造者类
使用场景
- 相同的方法,不同的执行顺序,产生不同的事件结果时;
- 多个部件或者零件都可以装配到一个对象中,但是产生的运行结果不同时;
- 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能;
实现
Product 产品类
1 2 3 4 5
| public class Product{ public void doSomething(){
} }
|
Builder抽象建造者
1 2 3 4
| public abstract class Builder{ abstract void setPart(); abstract Product buildProduct(); }
|
ConcreteBuilder 具体建造者
1 2 3 4 5 6 7 8
| public class ConcreteBuilder extends Builder{ public void setPart(){ } pbulic Product buildProduct(){ return new Product(); } }
|
Director 导演类
导演类起到封装的作用,避免高层模块深入到建造者内部的实现类。当建造者模式比较庞大时,导演类可以有多个。
1 2 3 4 5 6 7 8 9
| public class Director{
public Product buildProductA(){ Builder b = new ConcreteBuilder(); b.setPart(); return b.buildProduct(); }
}
|