入门设计模式之建造者模式



学习更多设计模式请参考:入门设计模式之汇总篇


引言:建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而利用一个建筑过程生成具有不同内部表象的对象。

初次读来这句话可能晦涩难懂,待我们一点点的来剖析它,解开他的神秘面纱。先看下图:

Builder:抽象建造者,给出了建造接口,这里我们以造房子为例,Builder就规定了所有的建筑工人都得会铺地板、砌墙、吊天花板。

WorkBuilder1:具体的建筑实现者,我们这里称之为小王,也就是说小王满足了铺地板、砌墙、吊天花板的要求,现在他就是一个合格的建筑工人了。

Floor、Wall、Ceiling:产品,它们就是小王需要建造的对象了。

Driector:导演者,这里我们可以理解为包工头,他呢就是指挥建造者们的角色了。比如有个富豪要建一个别墅,那么他会直接找到包工头:来,给你钱,去给我来个别墅。其实这个富豪在这里是完全不知道下方的建造者小王小刘等等人是如何操作的,他只跟包工头接触


/**
*抽象建造者
*也可以是一个接口
*/
public abstract class Builder {
    abstract void buildFloor();
    abstract void buildWall();
    abstract void buildCeiling();
}
/**
*小王
*/
public class WorkBuilder1 extends Builder {
    @Override
    void buildFloor() {
        new Floor();
    }

    @Override
    void buildWall() {
        new Wall();
    }

    @Override
    void buildCeiling() {
        new Ceiling();
    }
}
/**
*地板
*/
public class Floor{
}
/**
*墙
*/
public class Wall{
}
/**
*天花板
*/
public class Ceiling {
}

/**
*包工头
*/
public class Driector {
    public Builder builder;
    public Driector(Builder builder){
        this.builder=builder;
    }
    public void excute(){
        this.builder.buildFloor();
        this.builder.buildCeiling();
        this.builder.buildWall();
    }
}

现在我们回过头换一种方式再来看引言,将别墅的内部组成与建筑过程分离开来,从而实现一个包工头不仅可以造别墅还能修游泳池等。

z这样的话是不是已经理解了呢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值