建造者模式(又稱生成器模式)將一個複雜對象的構建過程和它的表示分離,從而使一樣的構建過程,能夠生成不一樣的表示。建造者模式將一個複雜對象的構建過程分紅一個個簡單的步驟,用戶只須要了解對象的類型和內容,無須關注複雜對象的構建過程,幫助用戶屏蔽掉內部具體的構建細節。建造者模式的結構圖以下:java
建造者接口(Builder):Builder接口主要用來定義建造者構建產品對象的各部分的行爲設計模式
具體建造者(ConcreteBuilder):具體建造者是用來直接建立產品對象的,具體建造者要實現兩類方法,一類是建造方法,例如:buildPart1()、buildPart2(),另外一類是獲取建造好的產品對象的方法ide
導演(Director):導演經過調用具體建造者來建立須要的產品對象ui
產品(Product):產品是用戶須要的複雜對象this
工廠模式通常都是建立一個產品對象,只須要將產品對象建立出來,不關心產品對象的組成細節和組成過程。spa
建造者模式也是建立一個產品對象,不一樣的是建造者模式不只要將產品對象建立出來,還要關心產品對象的組成細節和組成過程。設計
package com.hs.pattern.builder; public class Product { }
package com.hs.pattern.builder; public interface Builder { void buildPart1(); void buildPart2(); Product getProduct(); }
package com.hs.pattern.builder; public class ConcreteBuilder implements Builder { private Product product; @Override public void buildPart1() { // TODO Auto-generated method stub } @Override public void buildPart2() { // TODO Auto-generated method stub } @Override public Product getProduct() { // TODO Auto-generated method stub return product; } }
package com.hs.pattern.builder; public class Director { private Builder builder; public Director( Builder builder ){ this.builder = builder; } public Product builder(){ builder.buildPart1(); builder.buildPart2(); return builder.getProduct(); } }