建造者模式

1.产品类

1.1产品的统一接口

[java] view plain copy
  1. /** 
  2.  * @Desc:产品的接口 
  3.  * @author zy 
  4.  * @date 2016年6月21日下午4:40:33 
  5.  */  
  6. public interface Product {  
  7.       
  8.     /** 
  9.      * @Desc:获取具体的产品 
  10.      * @author:zy 
  11.      * @version: 2016年6月21日 下午5:00:37 
  12.      */  
  13.     public void getDetailProduct();  
  14.       
  15. }  
1.2 A产品和B产品

[java] view plain copy
  1. public class A implements Product{  
  2.   
  3.     @Override  
  4.     public void getDetailProduct() {  
  5.         System.out.println("get a product");  
  6.           
  7.     }  
  8.   
  9. }  
  10.   
  11.   
  12.   
  13. public class B implements Product{  
  14.   
  15.     @Override  
  16.     public void getDetailProduct() {  
  17.         System.out.println("get b product");  
  18.           
  19.     }  
  20.       
  21. }  

2.建造者类

public class Builder {
    private List<Product> list = new ArrayList<Product>();
    
    public void addA(int count){
        for(int i=0 ; i < count ; i++){
            list.add(new A());
        }
    }
    
    public void adddB(int count){
        for(int i=0 ; i< count ; i++){
            list.add(new B());
        }
    }
}

3.测试

/**
 * 建造者模式demo
 * 使用环境:很多功能集成到一个类里面,创造比较复杂的实例,比如,一个游戏角色,包含脸庞、上半身、下半身、武器等的组件生成
 * @author zy
 *
 */
public class M {
    public static void main(String[] args) {
        Builder builder = new Builder();
        builder.addA(10);
        
        builder.adddB(10);
        
    }
}


tips:

  建造者模式,主要面对复杂对象的生成,使调用者不需要关心对象的生成,只专注调用即可

Java的应用中JavaMail使用到了该模式

posted @ 2016-06-28 10:25  Bug开发攻城狮  阅读(128)  评论(0编辑  收藏  举报