也叫生成器模式。将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
在建造者模式中,有如下4个角色:
- 抽象建造者(Builder):用于规范产品的各个组成部分,并进行抽象,一般独立于应用程序的逻辑。
- 具体建造者(Concrete Builder):实现抽象建造者的所有方法,并返回一个组建好的产品实例(Product)。
- 产品(Product):建造中的对象,一个系统会有多于一个的产品类,这些产品不一定有共同的接口,可以是不相关的。
- 导演(Director):该角色负责安排已有模块的顺序,指导Builder的建造过程,可以有多个Director角色。
我们通过一个生产不同品牌电脑的例子来加深理解:
public abstract class Computer {protected String cpu;protected String band;public abstract void assemble();
}public class DellComputer extends Computer {@Overridepublic void assemble() {this.band = "Dell";}
}public class HpComputer extends Computer {@Overridepublic void assemble() {this.band = "Hp";}
}public abstract class AbstractBuilder {protected Computer computer;public abstract void setCpu();public abstract Computer build();
}public class DellBuilder extends AbstractBuilder {public DellBuilder() {this.computer = new DellComputer();}@Overridepublic void setCpu() {this.computer.cpu = "intel";}@Overridepublic Computer build() {this.computer.assemble();return this.computer;}
}public class HpBuilder extends AbstractBuilder {public HpBuilder() {this.computer = new HpComputer();}@Overridepublic void setCpu() {this.computer.cpu = "intel";}@Overridepublic Computer build() {this.computer.assemble();return this.computer;}
}public class Director {private AbstractBuilder builder;public Director(AbstractBuilder builder) {this.builder = builder;}public Computer create() {builder.setCpu();return builder.build();}
}
大家如果需要视频版本的讲解,可以关注下我的B站:
五、设计模式之建造者模式精讲