建造者模式(Builder Pattern)
建造者模式使用多个简单对象一步一步构建成一个复杂对象,属于创建型模式。
【需求】:对象创建有多种组合。又要封装创建逻辑(类似于工厂模式,调一个方法给指定实例)
如AK47可以装配消音器和多倍镜(可装可不装),消音器有高低级,多倍镜有高低倍。
生成实例如下:
带高级消音器的AK47 | 带高级消音器 8倍镜的AK47 | 带低级消音器 2倍镜的AK47 | AK47
【关键代码】:建造者(abstract builder与builder)负责创建和提供实例,指导者(Director)负责管理建造出来实例的依赖关系。
【例】:
//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)负责组装。
以上为个人理解,理解错误之处请帮忙指正,多谢!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。