23种设计模式之建造者模式
发布于 2021-01-19 17:07
定义; 指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示.
优点:
1、封装性好,易扩展
2、方便控制风险
缺点:
1、产品组成部分必须一样
2、内部结构复杂,维护成本高
使用场景:
当一个类的构造函数个数超过4个,而且这些参数有些事可选的,考虑使用建造者模式。
实现:
主要由产品、抽象建造者、具体建造者、指挥者四部分构成
1、产品:包含多个组成的复杂对象,有具体建造者生成各个组成部件
2、抽象建造者:包含各个部件的抽象方法接口,
3、具体建造者:完成产品各个部件的具体创建方法
4、指挥者:调用对象中部件构造和装配方法完成创建
代码:
1、产品
class Product {
private String partA;
private String partB;
private String partC;
public void setPartA(String partA) {
this.partA = partA;
}
public void setPartB(String partB) {
this.partB = partB;
}
public void setPartC(String partC) {
this.partC = partC;
}
public void show() {
//显示产品的特性
}
}
2、抽象建造者:
abstract class Builder {
//创建产品对象
protected Product product = new Product();
public abstract void buildPartA();
public abstract void buildPartB();
public abstract void buildPartC();
//返回产品对象
public Product getResult() {
return product;
}
}
3、具体建造者
public class ConcreteBuilder extends Builder {
public void buildPartA() {
product.setPartA("建造 PartA");
}
public void buildPartB() {
product.setPartB("建造 PartB");
}
public void buildPartC() {
product.setPartC("建造 PartC");
}
}
4、指挥者
class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
//产品构建与组装方法
public Product construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
return builder.getResult();
}
}
5、客户端
public class Client {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
Product product = director.construct();
product.show();
}
}
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材