设计模式-建造者模式

​ 

设计模式宗旨:设计模式的本质在于抽象、解耦,用抽象来隔离变化。将复杂的事务按照六大设计原则,分解成一个个单一职责的个体。换而言之,是个体的高内聚和简单化,然后再组合到一起完成职能。

定义: 建造者模式(Builder Pattern)也叫做生成器模式.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。

最佳实践:

1、某个对象有复杂的内部结构,通常包含多个成员属性,而且属性是可选的

2、相同的方法,不同的执行顺序,产生不同的对象或不同的运行结果。

3、当创建一个对象需要很多步骤时,适合使用建造者模式。

针对第一种情况,产品的属性过多时,我们可以采用链式构造去解决这样的问题

建造者模式通用的类图:

1、Product 产品类,一般是多个部件组成的复杂对象,由具体建造者来创建其各个零部件。

2、Builder 抽象建造者,包含创建产品各个子部件的抽象方法以及返回复杂产品的方法。

3、ConcreteBuilder 具体建造者,实现抽象 Builder 定义的所有方法,并且返回一个装配好的对象。

4、Director 指挥者,负责安排已有模块的顺序,然后调用 Builder 建造产品。

优点

1、封装性,在建造者模式中,调用方不必知道产品内部组成的细节,将一个复杂对象的构建与它的表示分离,使得相同的创建过程可以创建不同的产品对象。

2、扩展性,每个具体建造者都相互独立,替换具体建造者或新增具体建造者都很便捷。

3、更关注"由零件一步一步地组装出产品对象" 。将复杂产品的创建步骤拆分到不同的方法中,使得创建过程更加清晰。

缺点

1、建造者模式所创建的产品对象一般组成部分相似,如果产品的内部变化复杂,需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。

2、如果产品内部结构发生变化,建造者也要相应修改,有较大的维护成本。

模式扩展

1、建造者模式的简化,如果系统中只需要一个具体建造者的话,可以省略抽象建造者。此时指挥者角色也省略,让Builder类同时扮演指挥者与建造者。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值