入门设计模式之建造者

Posted zhixiang-org-cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门设计模式之建造者相关的知识,希望对你有一定的参考价值。

 

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

 

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

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

技术分享图片

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这样的话是不是已经理解了呢

以上是关于入门设计模式之建造者的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之:建造者模式BuilderPattern的实现

23种设计模式之建造者模式代码实例

《设计模式》之建造者模式(Builder)

设计模式从青铜到王者第八篇:创建型模式之建造者模式(BuilderPattern)

创建型模式之建造者模式

设计模式之建造者模式