创建者模式

一、第一种方式

  1. 房子对象
    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;
    }
    @Override
    public String toString() {
    return buildA+"\n"+buildB+"\n"+buildC+"\n"+buildD+"\n"+“房子验收完成”;
    }
    }

  2. 建造者
    abstract class Builder {
    //地基
    abstract void bulidA();
    //钢筋工程
    abstract void bulidB();
    //铺电线
    abstract void bulidC();
    //粉刷
    abstract void bulidD();
    //完工-获取产品
    abstract Product getProduct();
    }

  3. 具体建造者
    public class ConcreteBuilder extends Builder{
    private Product product;
    public ConcreteBuilder() {
    product = new Product();
    }
    @Override
    void bulidA() {
    product.setBuildA(“打地基”);
    }
    @Override
    void bulidB() {
    product.setBuildB(“垒砖造房子”);
    }
    @Override
    void bulidC() {
    product.setBuildC(“装修墙面”);
    }
    @Override
    void bulidD() {
    product.setBuildD(“验收房子”);
    }
    @Override
    Product getProduct() {
    return product;
    }
    }

  4. 指挥建造者
    public class Director {
    //指挥工人按顺序造房
    public Product create(Builder builder) {
    builder.bulidA();
    builder.bulidB();
    builder.bulidC();
    builder.bulidD();
    return builder.getProduct();
    }
    }

  5. 调用
    public class Click {
    public static void main(String[] args) {
    showBike(new OfoBuilder());
    showBike(new MobikeBuilder());
    }
    private void showBike(Builder builder) {
    Director director = new Director(builder);
    Bike bike = director.construct();
    bike.getFrame().frame();
    bike.getSeat().seat();
    bike.getTire().tire();
    }
    }
    二、第二种方式

  6. 房子对象
    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;
    }
    @Override
    public String toString() {
    return buildA+"\n"+buildB+"\n"+buildC+"\n"+buildD+"\n"+“房子验收完成”;
    }
    }

  7. 建造者
    abstract class Builder {
    //地基
    abstract void bulidA();
    //钢筋工程
    abstract void bulidB();
    //铺电线
    abstract void bulidC();
    //粉刷
    abstract void bulidD();
    //完工-获取产品
    abstract Product getProduct();
    }

  8. 具体建造者(工人)
    public class ConcreteBuilder extends Builder{
    private Product product;
    public ConcreteBuilder() {
    product = new Product();
    }
    @Override
    void bulidA(String mes) {
    product.setBuildA(mes) );
    }
    @Override
    void bulidB(String mes) {
    product.setBuildB(mes) );
    }
    @Override
    void bulidC(String mes) {
    product.setBuildC(mes) );
    }
    @Override
    void bulidD(String mes) {
    product.setBuildD(mes) );
    }
    @Override
    Product getProduct() {
    return product;
    }
    }

  9. 调用
    public static void main(String[] args) {
    ConcreteBuilder concreteBuilder = new ConcreteBuilder();
    Product build = concreteBuilder
    .bulidA(“打地基”)
    .bulidB(“验收房子”)
    .bulidC(“垒砖造房子”)
    .bulidD(“装修墙面”)
    .build();
    System.out.println(build.toString());
    }

三、建造者模式与抽象工厂模式的比较
如果将抽象工厂模式看成汽车配件生产工厂,生产一个产品族的产品,那么建造者模式就是一个汽车组装工厂,通过对部件的组装可以返回一辆完整的汽车

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NPC程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值