1.建造者模式
将一个复杂对象的构建与它的表示分离,使得同样的构建过程,可以创建不同的表示。
2.建造者模式通用类图,如图
3.例子是为了实现,客户启动一辆车时,按照不同的顺序启动车的各个功能。
在建造者模式中有4种角色
(1)Product 产品类
CarModel,通常是实现了模板方法模式
(2) Builder抽象建造者
CarBuilder,规范产品的组建
(3)ConcreteBuilder 具体建造者
(4)Director 导演类
负责安排已有模块的顺序
4.建造者模式
(1)优点:
封装性
易扩展
便于控制细节风险
(2)使用场景
a. 相同的方法,不同的执行顺序,产生不同的事件结果时,可以使用建造者模式
b. 多个部件或零件,都可以装配到一个对象,但是产生的运行结果又不相同时,
c. 产品类非常复杂
5.代码实例
(1) 抽象产品类
package com.design.建造者模式; import java.util.ArrayList; import java.util.List; public abstract class CarModel { public final static String CAR_START = "start"; public final static String CAR_STOP = "stop"; public final static String CAR_ALARM = "alarm"; // 启动序列 private List<String> sequence = new ArrayList<String>(); protected abstract void start(); protected abstract void alarm(); protected abstract void stop(); final public void setSequence(List<String> sequence){ this.sequence = sequence; } final public void run(){ for(int i = 0 ; i < sequence.size() ; i++){ String actionName = sequence.get(i); if(CAR_START.equals(actionName)){ this.start(); }else if(CAR_STOP.equals(actionName)){ this.alarm(); }else if(CAR_ALARM.endsWith(actionName)){ this.stop(); } } } }