建造者模式

建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建出不同的表示。它的关键特性是它将一个建造过程分解成若干步骤,即每个产品的建造都会遵循同样的步骤,但每个步骤内的具体实现都不尽相同。

建造者模式的类图:

  

建造者模式的实际用法

很多类库都有使用建造者模式,比如Java API中的StringBuilder:

StringBuilder strBuilder = new StringBuilder();
strBuilder.append("one");
strBuilder.append("two");
strBuilder.append("three");
String str = strBuilder.toString();

append()方法类似于建造过程中的一个步骤,toString()方法是其中的最后一步。

建造者模式的优点:

  1. 建造者模式可以有效地封装变化,在使用建造者模式的场景中,一般产品类和建造类是比较稳定的,因此将主要业务逻辑封装在Director对整体而言可以取得比较好的稳定性;
  2. 建造者模式很容易进行扩展。

使用建造者模式的情况:

  1. 需要生成产品对象有复杂的内部结构,每一个内部成分本身可以是对象,也可以仅仅是一个对象的一个组成部分;
  2. 需要生成的产品对象的属性相互依赖,建造者模式强制实行一种分步骤进行的建造过程,比如产品对象的一个属性必须在另一个属性被赋值之后才可以被赋值;
  3. 在对象创建过程中会使用到系统中的其它一些对象,而这些对象在产品的创建过程不易得到;

建造者模式和工厂模式的区别

当创造一个对象需要很多步骤时适合使用建造者模式。而当只需调用一个方法就可以简单地创建整个对象时适合使用工厂模式。工厂模式将对象的全部创建工作都封装在工厂类中,并由工厂类向客户端提供最终产品;而在建造者模式中,建造者类一般只提供产品类中各个组件的建造,而将具体建造过程交给Director类,由Director类负责将各个组件按照特定规则组建为产品交付给客户端。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值