給人的直觀感受是把行爲從類中抽象出來,類提要求,其功能實現是藉助別的類(builder)提供的函數,讓builder提供行爲。相對來講這個模式不是太難。java
builder把類中相同的代碼抽象了出來,實現了代碼的複用。一樣的builder一樣能夠擴展功能。設計模式
builder接口:行爲的基類。創建不一樣的行爲集合。ide
interface Builder { void buildA(); void buildB(); void buildC(); }
ABuilder具體的行爲提供者。函數
public class ABuilder implements Builder { @Override public void buildA() { System.out.println("造A型房子步驟1"); } @Override public void buildB() { System.out.println("造A型房子步驟2"); } @Override public void buildC() { System.out.println("造A型房子步驟3"); } }
client 提要求的客戶。測試
public class Client { Builder builder; Client(Builder builder) { this.builder = builder; } void getHome() { builder.buildA(); builder.buildB(); builder.buildC(); System.out.println("A型房子完成"); } }
測試ui
class Test { public static void main(String[] args) { ABuilder home = new ABuilder(); Client client = new Client(home); client.getHome(); } }
結果:this
造A型房子步驟1 造A型房子步驟2 造A型房子步驟3 A型房子完成
提示:看了好多設計模式,你會發現裏面的構造共同處:在A類中引用B接口,C類實現B接口提供函數,在A中委託給C類實現。這是java多態精髓所在。
spa