创建型设计模式之建造者模式

建造者模式

主要用于将产品修饰的这部分内容抽象化,提供给外部一个自由定制的修饰渠道,达到自由切换修饰规则但是不用修改旧代码的效果。

带有抽象接口的建造者模式主要涉及的对象有:
①引导者(Decorate)、②产品、③抽象建造者接口(Builder)、④定制化的Builder。

打个比方,我开着一辆拖拉机去石料场运载建筑用的石料,通过控制石料场的碎石机遥控器,设定石头大小,石头类型等后按启动键,就可以把拖拉机开到出石口等待接收加工好的石料后把它运走就可以了。

那么此时,我就相当于一个引导者,由我控制规则;碎石机就相当于抽象Builder,因为它提供了整体的框架和物理基础;碎石机的遥控器就是已定制好的Builder规则;石头就是产品;至于后面生产出来的石头怎么使用就和我无关了。

下面是这种模式常见的类图。
在这里插入图片描述
Scheme1Builder和Scheme2Builder是对应的定制化建设规则。

上代码:
① 新建Product类和抽象Builder
在这里插入图片描述
② 新建Decorate,引导builder构建
在这里插入图片描述
③ 编写具体builder规则
在这里插入图片描述
④ 测试
在这里插入图片描述在这里插入图片描述
这种建造者模式在JDK的StringBuffer和StringBuilder中有所体现。
在这里插入图片描述
StringBuffer和StringBuilder是抽象字符串建造者的定制化建造者类,使用时可以按情况使用,至于两者的区别这里不展开描述。
注:idea windows下查看类图的快捷键是ctrl+alt+u,全选后回车即可。

另外,建造者模式也有一种无抽象接口的方式。其通过一个定义好的Builder规则,以链式编程的方式选择性地给产品进行修饰。

在这里插入图片描述
代码如下
在这里插入图片描述
在这里插入图片描述
链式处理的方式让代码更简洁,适用于处理有穷集的属性构建操作。

这种方式在JDK代码的Locale类中有所体现,Locale是一个辅助本地化的类,有兴趣的朋友可以自己去查看一下源代码。

在这里插入图片描述

建造者模式也是创建型设计模式之一,其存在的好处有

  • 能够将类的使用和实例化分隔开来,并且隐藏类的构建细节。
  • 建造者间相互独立,不会互相影响,符合开闭原则,易于扩展。

缺点有

  • 只适用于一些共同性比较大的处理对象,如果差异太大,则不适合。
  • 使用了该模式后,如果对象的形态较多,变化较快,则会导致大量的建造者类,增大系统的复杂度。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值