建造者模式

  • 建造者模式将多个简单对象一步一步组装成复杂对象的过程
  • 使用的条件:构建复杂产品的原材料(类)基本是固定的,只是组装经常变化
结构角色
  • 原材料
  • 抽象的建造者(定义构建的方法)
  • 建造者 (根据原材料去构建出产品)
  • 指挥官(指挥让哪个建造者去建造,不同的建造者建造出来的是不一样的产品)
具体的过程

(这里就不结合其他的设计模式,主要讲明白建造者设计模式为主)

  • 原材料
/**
 * 原材料1
 */
public class Product1 {
}
/**
 * 原材料2
 */
public class Product2 {
}

/**
 * 原材料3
 */
public class Product3 {
}
  • 抽象建造者
/*
 * 抽象的建造者
 */
public interface Builder {
    //定义一个构建产品的方法
    Object createProduct ();
}

  • 具体的建造者
/**
 * 具体的建造者1
 * 组合方案:原材1 + 原材料2
 */
public class ConcreteBuilder1 implements Builder {
    private Product1 product1 = new Product1();
    private Product2 product2 = new Product2();
    @Override
    public Object createProduct () {
        //里面根据 原材1 + 原材料2 创建具体的产品
        //比如这里返回他们之间的包含关系
        return product1.equals(product2);
    }
}

/**
 * 具体的建造者2
 * 组合方案:原材料2+原材料3
 */
public class ConcreteBuilder2 implements Builder {
    private Product2 product2 = new Product2();
    private Product3 product3 = new Product3();

    @Override
    public Object createProduct () {
        //里面根据 原材2 + 原材料3 创建具体的产品
        //比如这里返回他们之间的包含关系
        return product2.equals(product3);
    }
}
  • 指挥官
/**
 * 指挥官 这里可以往上面抽象一层 抽象指挥官
 */
public class Director {
    //提供一个获取复杂产品的方法
    public Object createProduct (Builder builder) {
        return builder.createProduct();
    }
}

  • 调用的过程
        //产品1
        Object product1 = new Director().createProduct(new ConcreteBuilder1());
        //产品2
        Object product3 = new Director().createProduct(new ConcreteBuilder2());

我们只需要编写不同的具体建造者,去创建不同的组合产品,传入,就可以获取到不同的产品
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值