设计模式之建造者模式

一建造者模式介绍

将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。如MyBatis中SqlSession的创建。
建造者(Builder)模式包含以下4个角色 :

  • 抽象建造者类(Builder):这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的部件对象的创建。
  • 具体建造者类(ConcreteBuilder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。在构造过程完成后,提供一个方法,返回创建好的负责产品对象。
  • 产品类(Product):要创建的复杂对象 (包含多个组成部件)。
  • 指挥者类(Director):调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建(客户端一般只需要与指挥者进行交互)。
    在这里插入图片描述

二:具体例子(创建共享单车)

生产自行车是一个复杂的过程,它包含了车架,车座等组件的生产。而车架又有碳纤维,铝合金等材质的,车座有橡胶,真皮等材质。对于自行车的生产就可以使用建造者模式。在这里插入图片描述
具体产品:

public abstract class Builder {
    protected Bike  myBike=new Bike();
    //制作车架
    public abstract void buildFrame();
    public abstract void buildSeat();
    public abstract Bike createBike();
}
public class HelloBikeBuilder extends Builder{

    @Override
    public void buildFrame() {
        myBike.setFrame("哈罗的车架");
    }

    @Override
    public void buildSeat() {
        myBike.setSeat("哈罗的座椅");
    }

    @Override
    public Bike createBike() {
        return myBike;
    }
}

public class MobileBikeBuilder extends Builder{
    @Override
    public void buildFrame() {
        myBike.setFrame("摩拜的车架");
    }
    @Override
    public void buildSeat() {
        myBike.setSeat("摩拜的座椅");
    }
    @Override
    public Bike createBike() {
        return myBike;
    }
}

指挥者类:

public class Director {
    private Builder builder;
    public Director(Builder builder) {
        this.builder = builder;
    }
    public Bike construct(){
        builder.buildFrame();
        builder.buildSeat();
        return builder.createBike();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值