建造模式

        有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附件等部分,而在最起码的收件人地址得到赋值之前,这个电子邮件不能发出。
        还有些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义。在某个性质没有赋值之前,另一个性质无法赋值。这些情况使得性质本身的建造涉及到复杂的商业逻辑。
        建造模式非常适用于此种情况。建造模式利用一个导演者对象和具体建造者对象一个一个地建造出所有的零件,从而建造出完整的产品对象。建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造零件的责任分割开来,达到责任划分和封装的目的。
package  builder;

public   interface  Product  {

    
public void showinfo();
    
}



package  builder;

public   class  ProductA  implements  Product  {

    String part1 
= null;
    String part2 
= null;

    
public void showinfo() {
        System.out.println(part1);
        System.out.println(part2);
    }

    
}



package  builder;

public   class  ProductB  implements  Product  {

    String part1 
= null;

    
public void showinfo() {
        System.out.println(part1);
    }

    
}



package  builder;

public   interface  Builder  {

    
void buildPart1();
    
    
void buildPart2();
    
    
public Product getProduct();
    
}



package  builder;

public   class  BuilderA  implements  Builder  {

    ProductA productA 
= new ProductA();
    
    
public void buildPart1() {
        productA.part1
="ProductA_part1";
    }

    
    
public void buildPart2() {
        productA.part2
="ProductA_part2";
    }

    
    
public Product getProduct() {
        
return productA;
    }

}



package  builder;

public   class  BuilderB  implements  Builder  {

    ProductB productB 
= new ProductB();
    
    
public void buildPart1() {
        productB.part1
="ProductB_part1";
    }

    
    
public void buildPart2() {
        
    }

    
    
public Product getProduct() {
        
return productB;
    }

    
}



package  builder;

public   class  Director  {

    Builder builder;
    Product product;
    
    
public Product construct(String type) {
        
if (type!=null&&type.equals("A"))
            builder 
= new BuilderA();
        
else
            builder 
= new BuilderB();
        builder.buildPart1();
        builder.buildPart2();
        product 
= builder.getProduct();
        
return product;
    }

    
}



package  builder;

public   class  Client  {

    
public static void main(String[] args) {
        Director director 
= new Director();
        Product product 
= director.construct("A");
        product.showinfo();
    }


}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值