建造者模式

来源:互联网 发布:怎样才能注销淘宝账号 编辑:程序博客网 时间:2024/05/21 09:17

重点:人都会经历,婴儿、少年、青年、中年、老年。但是每个人又不完全一样。  建造者,在盖楼房,每一个房子肯定都不一样,但是盖楼的流程都是相同的。

作用:保证流程不变。  

一般遇到需要  把控流程,细节多样的模式,就可以使用建造者。用一个director类来把控。许多builder去建造 流程 中的 细节产品。

将一个复杂对象的构建 与它的表示分离。使得同样的构建流程,但是有不同的表示。


客户不知道产品内部实现。

builder之间是相互独立的。 比如在游戏中,如果想换个英雄,那么重新new一个concreteBuilder 创建就OK了。很容易扩展。

因为构建出来的都一样,所以对其他模块不影响。


builder:接口,规范建造者,要构建产品的组成,不能随便构建,不设计具体构建。

concreteBuilder:根据接口,具体构建

director:导演,把控流程,保证 复杂对象 各部分,创建的顺序。

product: 最终生成的复杂对象。


//我们要生产出一个人

class Product {

private Head head;

private Hand hand;

private Foot foot;

}

//抽象建造者,必须提供相应的 生成方法,来规范具体生产者。  (接口也是可以的。)

abstract  class  Builder{

     public abstract void  builderHead();

     public abstract void  builderHand();

     public abstract void  builderFoot();

}

//具体建造者,继承重写里面的方法。提供每个组件的 构建方法。并且设置到 复杂对象中。 并 提供一个 返回复杂对象的方法。

class  concreteBuilder  extends Builder{

private Product product;

public void  builderHead() {

product.setHead(new Head());

}

public void  builderHand() {

product.setHead(new Hand());

}


public void  builderFoot() {

product.setHead(new Foot());

}

     public Product getProduct(){

return this.product;

}

}

//导演。控制 制造的流程。什么时候返回 对象、

class Director{

private Builder builder;

public void Director(Builder builder){

this.builder = builder;

}

public void create1(){

builder.createHead();

}

public void create2(){

builder.createHead();

builder.createHand();

builder.createFoot();

}

}

//我们在 使用时。如何拿到  导演 ‘导’ 好的对象

Builder builder = new ConcreteBuilder();

Director director = new Director(builder);

director .create1();            //这一步来固定构建顺序。   具体构建 由build觉得。。构建一个 小手 大手  都是concretebuilder决定的。

Product product   =  builder.getProductor();




0 0
原创粉丝点击