java设计模式连载(3) --建造者模式

   java设计模式连载(3) --建造者模式

 

 意图:

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

  适用性:

           

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。

 

    实例:

       1.     定义一个计算机构建者接口

package Builder_Pattern;

public interface  ComputerBuilder {
 
	   public  void buildDisplayer();
	    
	   public  void buildMainframe();
	    
	   public  void buildDataline();

	   public  Computer  buildComputer();
	   
}


  2. 定义一个通用计算机类

 

package Builder_Pattern;

public class Computer{

	private String displayer;
    
    private String mainframe;
    
    private String dataline;
 
    public String getDisplayer() {
		return displayer;
	}

	public void setDisplayer(String displayer) {
		this.displayer = displayer;
	}

	public String getMainframe() {
		return mainframe;
	}

	public void setMainframe(String mainframe) {
		this.mainframe = mainframe;
	}

	public String getDataline() {
		return dataline;
	}

	public void setDataline(String dataline) {
		this.dataline = dataline;
	}
	
}


 

 

3.  定义一个主管,管理构建计算机的人

 

package Builder_Pattern;

public class  ComputerDirector {
	
public  Computer   constructComputer(ComputerBuilder  cb){       
		    cb.buildDisplayer();
		    cb.buildMainframe();
		    cb.buildDataline();
		    return  cb.buildComputer();
	    }
}




4.   定义一个PC机   ,继承通用计算机这个类。或者可以再定义大型计算机 

package Builder_Pattern;

public class  PC  extends Computer{
  
	         
} 


 

5.   定义一个专门建造PC机的构造者

 

package Builder_Pattern;

public class  PCBuilder  implements ComputerBuilder {

	private  Computer computer;
    	
    public    PCBuilder(){
    	computer =   new PC();
    }
    
	@Override
	public Computer buildComputer() {	
       
		  return   computer;
	}

	@Override
	public void buildDataline() {
		
	   computer.setDataline("构建个人计算机数据线");
		
	}

	@Override
	public void buildDisplayer() {
		
		  computer.setDisplayer("构建个人计算机显示器");
	}
	
	@Override
	public void buildMainframe() {
		
		   computer.setMainframe("构建个人计算机主机");
	}
}


6.   测试这个模式

 

package Builder_Pattern;

public class Test{

    public static void main(String[] args) {       	
    	  //实例化一个计算机构建者  
    	  ComputerDirector computerDirector = new ComputerDirector(); 
     	       
    	  Computer computer = computerDirector.constructComputer( new PCBuilder());
         	  
    	  System.out.println(computer.getDisplayer());
    	  System.out.println(computer.getMainframe());
    	  System.out.println(computer.getDataline());
          
  }
}


7. 多谢浏览,欢迎斧正。

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值