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()); } }