java builder pattern_【Creational Pattern】建造者模式(Builder Pattern)

建造者模式(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)负责组装。

以上为个人理解,理解错误之处请帮忙指正,多谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值