设计模式之十一:创建模式(Builder Pattern)

GOF 建造者模式  将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

建造者模式主要由以下部分组成。

建造者接口:给出一个接口,以规范产品对象的各个组成成分的建造,这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件创建

具体建造者:实现了建造者接口。针对不同的商业逻辑,具体化复杂对象的各部分创建。创建完成后,提供产品的实例。

指导者:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。

产品:要建造的复杂对象。

创建者模式的使用范围:

(1)需要生成的产品对象有复杂的内部结构。

(2)需要生成的产品对象的属性相互依赖,建造者可以强迫生成顺序。

(3)在对象创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程中不易得到。

实现效果:

(1)建造者模式的使用时产品的内部表象可以独立的变化。使用建造者模式可以使客户端不必知道产品内部组成的细节。

(2)每一个Builder都相对独立,而其他的Builder无关。

(3)模式所创建的产品易于控制。


//复杂对象
public class Person {
       private String foot;
       private String body;
       private String head;

      public String getFoot() {
              return foot;
     }

     public void setFoot(String foot) {
             this.foot = foot;
     }

    public String getBody() {
            return body;
    }

    public void setBody(String body) {
            this.body = body;
    }

    public String getHead() {
            return head;
    }

    public void setHead(String head) {
            this.head = head;
    }
}

//子类
public class Man extends Person{
}

//建造者接口
public interface Builder {
       void buildFoot();
       void buildBody();
       void buildHead();  
       public Person buildPerson();
}

//具体建造者
public class PersonBuilder implements Builder{
        Person man;
        public PersonBuilder() {
                man = new Man();
        }

@Override
public void buildFoot() {
        System.out.println("shuangjiao");
}

@Override
public void buildBody() {
        System.out.println("shenti");
}

@Override
public void buildHead() {
        System.out.println("toubu");
}

@Override
public Person buildPerson() {
       return man;
       }
}

//指导者
public class Director {
        public Person constructPerson(PersonBuilder pb) {
               pb.buildBody();
               pb.buildFoot();
               pb.buildHead();

              return  pb.buildPerson();
         }
}

http://blog.csdn.net/bboyfeiyu/article/details/24375481

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值