简单了解 建造者模式的 大致流程,怎么回事

建造者模式

工厂模式提供的是创建单个类的模式,每个类的规模不能太过庞大。当一个类的规模太过庞大时,需要对其进行分解,然后根据规则一步一步构建而成。建造者模式就可以完成这样的任务。

建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。下面时建造者模式类图
建造者模式

对上面类图进行简要说明,方便我们理解建造者模式。假设我们需要一个产品,比如计算机。于是定义一个计算机类,在类中说明了这台计算需要哪些部件,比如显卡,声卡等。

// Product 定义 产品 需要那些东西
public class Product {
	// 定义 主板
    private String motherboards;
    // 定义 声卡
    private String soundcard;
    
    // 下面 是对应 的get/set 方法
    public String getMotherboards() {return motherboards;}
    public void setMotherboards(String motherboards) { 
        this.motherboards = motherboards;
    }

    public String getSoundcard() { return soundcard;}
    public void setSoundcard(String soundcard) {
        this.soundcard = soundcard;
    }

    public void show(){
        System.out.println("---->"+motherboards);
        System.out.println("---->"+Soundcard);
    }
}

已经获得了计算机构建清单,接下来就是交给建造者进行建造。建造者(Builder)根据构建清单设计出每个部件的建造方式,也就是定义各个子部件的抽象方法。

// 定义 产品的设计图纸
public interface Builder {
    //构建主板
    void builderMotherboards();
    // 构建声卡
    void builderSoundcard();
    //返回产品对象
    Product getResult();
}

具体的构建者只需要继承建造者(Builder)就可以按照建造方式,建造电脑需要的部分。

// 构建者A 对 图纸 进行了 具体的设计
public class ConcreteBuilderA implements Builder {
    private Product product = new Product();
    @Override
    public void builderMotherboards() {
        product.setMotherboards("构建者---A---造 主板");
    }
    @Override
    public void builderSoundcard() {
        product.setSoundcard("构建者---A---造 声卡");
    }
    // 返回建造完成的对象
    @Override
    public Product getResult() {
        return product;
    }
}

B

// 构建者B对 图纸 进行了 具体的设计
public class ConcreteBuilderB implements Builder {
    private Product product = new Product();
    @Override
    public void builderMotherboards() {
        product.setMotherboards("构建者---B---造 主板");
    }
    @Override
    public void builderSoundcard() {
        product.setSoundcard("构建者---B---造 声卡");
    }
    // 返回建造完成的对象
    @Override
    public Product getResult() {
        return product;
    }
}

到此为止,电脑的各个部件已经创建完毕,剩下就需要一个指挥者(Director)把它们组装成完整的计算机。

// 选取 构建者 创建的组件 ,进行组合
public class Director {
    private Builder builder;
    public Director(Builder builder){
        this.builder=builder;
    }
    //产品构建与组装方法
    public Product construct(){
        builder.builderMotherboards();
        builder.builderSoundcard();
        return builder.getResult();
    }
}

开始使用

public class Client{
    public static void main(String[] args){
        // 具体建造者
        Builder builder=new ConcreteBuilderA();
        // 进行组装
        Director director=new Director(builder);
        Product product=director.construct();
        // 展示产品
        product.show();
    }
}

总结

通过上面学习简单了解了建造者模式的大致流程,建造者模式主要是用于创建一些复杂的对象,并且对象内部构建间的建造顺序是稳定的,但对象内部各个部分通常面临着复杂的变化,当发生变化时只需要在定义一个具体的建造者就可以了。

公众号:HarLearn

公众号:HarLearn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值