建造者模式

建造者模式是一种创建型设计模式,用于创建复杂对象。它将产品的构建和表示分离,允许同样的构建过程创建不同的表示。模式中包含产品角色、抽象建造者、具体建造者和指挥者四个角色。建造者模式适用于需要生成内部结构复杂的产品的情况,并且能够隔离产品的创建和使用。相比抽象工厂模式,建造者模式更注重一步步构造复杂对象,返回的是一个完整的产品。
摘要由CSDN通过智能技术生成

建造者模式

◆建造者模式也属于创建型模式,它提供了一种创建对象的最佳方式。
◆定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
◆主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。
◆用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细
节隐藏起来)
◆例子:

  • 工厂(建造者模式) :负责制造汽车(组装过>程和细节在工厂内)
  • 汽车购买者(用户) :你只需要说出你需要的>型号(对象的类型和内容),然后直接购买就可以使用了(不需要知道汽车是怎么组装的(车轮、 车门、>发动机、方向盘等等) )
    在这里插入图片描述
    建造者模式的四个角色
  1. Product(产品角色): 一个具体的产品对象。
  2. Builder(抽象建造者): 创建一个Product对象的各个部件指定的 接口/抽象类。
  3. ConcreteBuilder(具体建造者): 实现接口,构建和装配各个部件。
  4. Director(指挥者): 构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。指挥者指挥我们的具体的建造者来完成我们的产品

例一:


//指挥:核心,负责指挥建造一个工程,工程如何建造有它决定
public class Director {
   

    //指挥工人按顺序建房子
    public Product build(Builder builder){
   
          builder.buildA();
          builder.buildB();
          builder.buildC();
          builder.buildD();
          return builder.getProduct();
    }

}

//抽象的建造者:方法
public abstract class Builder {
   
    abstract void buildA();//地基
    abstract void buildB();//钢筋工程
    abstract void buildC();//铺电线
    abstract void buildD();//粉刷

    //完工:得到产品
    abstract Product getProduct();

}


//具体建造者:工人
public class Worker extends Builder{
   
    private Product product;
    public Worker(){
   
        product = new Product();
    }
    @Override
    void buildA() {
   
      product.setBuildA("建地基");
        System.out.println("建地基");
    }
    @Override
    void buildB() {
   
        product.setBuildB("钢筋工程");
        System.out.println("钢筋工程");
    }
    @Override
    void buildC() {
   
        product.setBuildC("铺电线");
        System.out.println("铺电线");
    }
    @Override
    void buildD() {
   
        product.setBuildD("粉刷");
        System.out.println("粉刷");
    }
    @Override
    Product getProduct() {
   
        return product;
    }
}
//产品:房子
public class Product {
   
    private String buildA;
    private String buildB;
    private String buildC;
    private String buildD;

    public String getBuildA() {
    return buildA; }
    public void setBuildA(String buildA) {
    this.buildA = buildA; }
    public String getBuildB() {
    return buildB; }
    public void setBuildB(String buildB) {
    this.buildB = buildB; }
    public String getBuildC() {
    return buildC; }
    public void setBuildC(String buildC) {
    this.buildC = buildC; }
    public String getBuildD() {
    return buildD; }
    public void setBuildD(String buildD) {
    this.buildD = buildD; }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值