Builder設計模式

wKioL1PMzQKxSTJRAAKUiSwCEcE781.jpg

Builder設計模式:個人認爲,核心在於兩個類。Builder類和Director類。通過Builder類和Director類,把萬事萬物抽象爲部件和組裝兩部分。通過兩部分的配合,把最終的產品,展示給客戶。上圖,只組裝了一款產品。

公司做大以後,不僅可以提供一款產品。根據已有的功能多少和精簡,可以快速生產出多種的產品,只要不同的construct和Product就可以了。construct提供了三個功能,說明這是一款lenovo的thinkpadT430筆記本電腦。如果construct只提供了一個show功能,那可能就是聯想的平板了。

public interface Builder {
  
   void call();
  
   void show();
  
   void work();

   Product getResult();

}
public class Lenovo implements Builder {

   private Product lenovo;
   
   public void call() {
      // TODO: implement
       lenovo.setCallFun("lenovo call");
   }
   
   public void show() {
      // TODO: implement
       lenovo.setShowFun("lenovo show");
   }
   
   public void work() {
      // TODO: implement
       lenovo.setWorkFun("lenovo work");
   }
   
   public Product getResult() {
      // TODO: implement
      return this.lenovo;
   }
   
   public Lenovo() {
      // TODO: implement
      lenovo = new Product();
   }

}
public class Product {
  
   private String callFun;

   private String showFun;
  
   private String workFun;
   
   public String getCallFun() {
      return callFun;
   }
   
  
   public void setCallFun(String newCallFun) {
      callFun = newCallFun;
   }
   
   public String getShowFun() {
      return showFun;
   }
   
   public void setShowFun(String newShowFun) {
      showFun = newShowFun;
   }
   
   public String getWorkFun() {
      return workFun;
   }
   
   public void setWorkFun(String newWorkFun) {
      workFun = newWorkFun;
   }

}
public class Director {

   private Builder builder;
   
   public Director(Builder builder) {
      // TODO: implement
      this.builder= builder;
   }
   
   public void construct() {
      // TODO: implement
      builder.call();
      builder.show();
      builder.work();
   }

}
public class CallBuilder {

	private static Builder builder;

	private static Director director;

	private static Product product;

	public static void main(String[] args) {		

		builder = new Lenovo();
		director = new Director(builder);

		director.construct();
		product = builder.getResult();

		System.out.println(product.getCallFun());
		System.out.println(product.getShowFun());
		System.out.println(product.getWorkFun());

	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章