建造者模式使用多个简单对象一步一步构建成一个复杂对象,属于建立型模式。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
以上为我的理解,理解错误之处请帮忙指正,多谢!总结