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 我们将第一时间删除。

相关素材