建造者模式使用多個簡單對象一步一步構建成一個複雜對象,屬於建立型模式。ide
【需求】:對象建立有多種組合。又要封裝建立邏輯(相似於工廠模式,調一個方法給指定實例)ui
如AK47能夠裝配消音器和多倍鏡(可裝可不裝),消音器有高低級,多倍鏡有高低倍。
生成實例以下:
帶高級消音器的AK47 | 帶高級消音器 8倍鏡的AK47 | 帶低級消音器 2倍鏡的AK47 | AK47code
【關鍵代碼】:建造者(abstract builder與builder)負責建立和提供實例,指導者(Director)負責管理建造出來實例的依賴關係。對象
【例】:class
//AK 47, 可裝配消音器 多倍鏡 class AK47 { /** 消音 */ String mute; /** 倍鏡 */ String timesMirror; @Override /**輸出: 這是一把帶 [消音器] [多倍鏡] 的AK47 */ public String toString() { return "這是一把帶"+(mute!=null?mute:"") + " " + (timesMirror!=null?timesMirror:"") +"的AK47"; } } /** 建造者,負責生產消音器,多倍鏡以及AK47 */ abstract class AK47Builder { abstract String buildMute(); abstract String buildMirrir(); abstract AK47 buildAK47(); } /** 建造者具體實現 */ class LowAK47Builder extends AK47Builder { @Override String buildMute() { return "低級消音器"; } @Override String buildMirrir() { return "2倍鏡"; } AK47 buildAK47() { return new AK47(); } } class HignAK47Builder extends AK47Builder { @Override String buildMute() { return "高級消音器"; } @Override String buildMirrir() { return "8倍鏡"; } AK47 buildAK47() { return new AK47(); } } /** 指導者*/ class AK47Director { /** 生產帶消音器和倍鏡的AK47 */ public AK47 muteMirrorAK47(AK47Builder builder) { AK47 ak47 = builder.buildAK47(); ak47.mute = builder.buildMute(); ak47.timesMirror = builder.buildMirrir(); return ak47; } /** 生產帶消音器的AK47 */ public AK47 muteAK47(AK47Builder builder) { AK47 ak47 = builder.buildAK47(); ak47.mute = builder.buildMute(); return ak47; } /** 生產帶倍鏡的AK47 */ public AK47 mirrorAK47(AK47Builder builder) { AK47 ak47 = builder.buildAK47(); ak47.timesMirror = builder.buildMirrir(); return ak47; } /** 生產AK47 */ public AK47 AK47(AK47Builder builder) { return builder.buildAK47(); } } public class BuilderPatternDemo { public static void main(String[] args) { /** 指導者 */ AK47Director d = new AK47Director(); /** 建造者 */ LowAK47Builder low = new LowAK47Builder(); HignAK47Builder hign = new HignAK47Builder(); AK47 ak47 = d.muteMirrorAK47(hign); System.out.println(ak47);// hign -> 高級消音器,8倍鏡AK ; low ->低級消音器,2倍鏡AK } }
以上例子中,AK47的組裝模式大體有四種,1 帶消音器和多倍鏡,2 帶消音器,3 帶多倍鏡,4 什麼都不帶。
而消音器又有高低級,多倍鏡有高低倍的區分,經過組合又會產生多種不一樣的實例。方法
總結,建造者模式 就是工廠模式的升級版,由工廠模式(Builder)生產組件,由指導者(Director)負責組裝。im
以上爲我的理解,理解錯誤之處請幫忙指正,多謝!總結