建造者模式

《将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示》

... ... 

是不是有点懵,没关系,往下看.

...

其实也就是把创建对象和使用对象的过程分离开来,感觉有点像工厂模式,不不不,其实他们是一类,都属于创建型模式,但还是有区别的,建造者模式主要是针对创建复杂对象的.下面我们来细聊.

建造者模式中有4个角色:

1 leader

2 builder接口

3 builder的实现

4 product 产品

他们是如何协同工作的呢? 我来画个图,稍等... ... 

 

就这? 好吧 上代码... ... 

build

public interface CarBuild {

    public void builderColor();
    public void builderEngine();
    public void builderWheel();
    public CarProduct builderQiRuiCarProduct();
}

build实现

public class QiRuiCarBuild implements CarBuild {

    private CarProduct product;

    public QiRuiCarBuild() {
        product = new CarProduct();
    }

    @Override
    public void builderColor() {
        product.setColor("白色");
        System.out.println("白色");
    }

    @Override
    public void builderEngine() {
        product.setColor("六缸发动机");
        System.out.println("六缸发动机");

    }

    @Override
    public void builderWheel() {
        product.setWheel("银色轮翼");
        System.out.println("银色轮翼");

    }

    @Override
    public CarProduct builderQiRuiCarProduct() {
        return product;
    }
}

product

public class CarProduct {

    private String color;
    private String engine;//发动机 照顾下弱势群体
    private String wheel;//轮子

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getEngine() {
        return engine;
    }

    public void setEngine(String engine) {
        this.engine = engine;
    }

    public String getWheel() {
        return wheel;
    }

    public void setWheel(String wheel) {
        this.wheel = wheel;
    }
}

leader

public class Leader {

    public CarProduct build(CarBuild build){
        System.out.println("第一步 先把发动机装进去");
        build.builderEngine();
        System.out.println("第二步 把车身颜色一搞");
        build.builderColor();
        System.out.println("第三步 把轮子装好");
        build.builderWheel();
        System.out.println("齐活 可以卖了");
        return build.builderQiRuiCarProduct();
    }

}

代码写完了,测试下成果.

public class BuildTest {

    public static void main(String[] args) {
        Leader qiRuiLeader = new Leader();
        CarBuild build = new QiRuiCarBuild();//需要什么建造者就new什么建造者,也可以是吉利 奔驰 宝马 反正都不要钱
        CarProduct product = qiRuiLeader.build(build);
    }

}

测试结果:

第一步 先把发动机装进去
六缸发动机
第二步 把车身颜色一搞
白色
第三步 把轮子装好
银色轮翼
齐活 可以卖了

生产汽车是有严格的顺序的,所以必须按照顺序来,

我可以不知道怎么生产,但我可以让知道怎么生产的人生产.

如果理解不妥之处还请在下方留言

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值