菜鸟硕枫设计模式系列之6 建造者模式

建造者模式是设计模式中另一个重要的创建对象的方法模式。它的特点主要是稳定了创建的过程,比如下面的例子中就是每个产品的创建过程都包括创建A部分和创建B部分,但不同的builder可以有自己的方式去创建产品,比如不同的房地产商可以建不同的房子【大房子、小房子】,只要建造过程稳定一致就可以了。

建造者模式类图:
[img]http://dl.iteye.com/upload/attachment/364530/f8ab4e69-9028-3e38-9741-bf9cf2a1622e.jpg[/img]


建造者接口:

package builderPattern;

public interface Builder {

Product getProduct();
Object buildProductPartA();
Object buildProductPartB();

}


具体建造者:



public class ConcreteBuilder1 implements Builder{

public Object buildProductPartA() {

System.out.println("build Big ProductPartA with tools .");
Object object = new Object();
return object;
}

public Object buildProductPartB() {

System.out.println("build Big ProductPartB with tools .");
Object object = new Object();
return object;
}

public Product getProduct() {
// TODO Auto-generated method stub
return new Product(buildProductPartA(),buildProductPartB());
}


}



package builderPattern;

public class ConcreteBuilder2 implements Builder{

public Object buildProductPartA() {

System.out.println("build Small ProductPartA with tools .");
Object object = new Object();
return object;
}


public Object buildProductPartB() {

System.out.println("build Small ProductPartB with tools .");
Object object = new Object();
return object;
}


public Product getProduct() {
// TODO Auto-generated method stub
return new Product(buildProductPartA(),buildProductPartB());
}


}


具体产品:

package builderPattern;

public class Product {

private Object partA;
private Object partB;

public Product(Object partA,Object partB){
this.partA = partA;
this.partB = partB;
}
}


指挥者:

package builderPattern;

public class Director {

private Builder builder;

public Director(Builder builder){
this.builder = builder;
}

public Product getProduct(){
return builder.getProduct();
}
}


测试类:

package builderPattern;

public class BuilderTest {

public static void main(String[] args){

Builder builder = new ConcreteBuilder1();
Director director = new Director(builder);

director.getProduct();

System.out.println("建造另外一件产品");

director = new Director(builder);
Builder builder2 = new ConcreteBuilder2();

director.getProduct();
}
}


说明:说明:产品这块当然也可以通过抽象出一个抽象类或接口了,只要这一类产品创建过程一样,都可以通过建造者模式去创建。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值