建造者模式

建造者模式

为什么需要建造者模式?

创建复杂对象,这些对象内部构建间的建造顺序通常是稳定的,但是对象内部的构建通常面临着复杂的变化。使用建造者模式使得建造代码与表示类型代码相分离,需要改变一个产品的类型,只需要再定义一个具体的建造者即可。

什么是建造者模式?

将一个复杂对象的构建与它的表示相分离,使得同样的创建方式可以生成不同类型的对象。

建造者模式的抽象实现

image-20220120230411573

逻辑说明:建造者类中定义了产品类有哪几个部分,具体的建造者类实现方法去生成同一部分的不同形态,指挥者类确保每个部分可按照顺序装配部分。

产品类

public class App {
    public static void main(String[] args) {
        Director director = new Director();
        Builder builder1 = new ConcreteBuilder1();

        director.construct(builder1);
        Product product = builder1.getProduct();
        product.show();
    }
}

建造者类

public abstract class Builder {
    public abstract void builderPartA();
    public abstract void builderPartB();
    public abstract Product getProduct();
}

指挥者类

public class Director {
    public void construct(Builder builder){
        builder.builderPartA();
        builder.builderPartB();
    }

}

具体的建造者类

public class ConcreteBuilder1 extends Builder{

    private Product product = new Product();

    @Override
    public void builderPartA() {
        product.add("部件A");
    }

    @Override
    public void builderPartB() {
        product.add("部件B");
    }

    @Override
    public Product getProduct() {
        return product;
    }
}

客户端类

public class App {
    public static void main(String[] args) {
        Director director = new Director();
        Builder builder1 = new ConcreteBuilder1();

        director.construct(builder1);
        Product product = builder1.getProduct();
        product.show();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值