《java与模式》学习系列——建造者模式

 

一、 建造(Builder)模式结构图

建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造者零件的责任分割分开,达到责任划分和封装的目的。

建造模式利用一个导演者对象和具体建造者对象一个一个的建造出所有零件,从而建造出完整的产品对象。

结构图如下:

二、 建造模式在java中的应用

JavaMail中的建造模式

JavaMail是一组J2SE的扩展API的一个类库,设计师可以使用它很容易的开发出功能齐备的客户端电子邮件软件。

JavaMail中的MessageMimeMessage等类均是退化的建造模式的应用。作为客户端和导演对象,MailSender通过一步步的提供MimeMessage对象的“零件”性质,也就是fromrecipientsubjecttext等,最后得到整个的产品对象,也就是MimeMessage对象。

代码如下:

 

三、 在什么情况下使用建造者模式

1、  需要生成的产品对象有复杂的内部结构。每一个内部成分本身可以是对象,也可以是一个对象(即产品对象)的一个组成部分。

2、  需要生成的产品对象的属性相互依赖。建造模式可以强制实行一种分步骤进行的建造过程,因此,如果产品对象的一个属性必须在另一个属性被赋值之后才可以被赋值,使用建造模式便是一个很好的设计思想。

3、  在对象创建过程中会使用到系统中的其他一些对象,这些产品对象的创建过程不易得到。

四、 建造模式与其他模式的关系

建造模式与抽象工厂模式的区别

在抽象工厂模式中,每一次工厂对象被调用时都会返还一个完整的产品对象,而客户端有可能会决定把这些产品组装成一个更大更复杂的产品,也有可能不会。建造类则不同,它一点一点的建造出一个复杂的产品,而这个产品的组装过程就发生在建造者角色内部。建造者模式的客户端拿到的是一个完整的最后产品。

换言之,虽然抽象工厂模式与建造模式都是设计模式,但是抽象工厂模式处在更加具体的尺度,而建造模式则处于更加宏观的尺度上。一个系统可以有一个建造模式和一个抽象工厂模式组成,客户端通过调用这个建造角色,间接的调用另一个抽象工厂模式的工厂角色。工厂模式返还不同产品组的零件,而建造者模式则把它们组装起来。

建造模式与策略模式

建造模式在结构上很接近于策略模式,事实上建造模式是策略模式的一种特殊情况,这两种模式的区别在于他们的用意不同。建造模式适用于为客户端一点一点的建造新的对象,而不同类型的具体建造者角色虽然都拥有相同的接口,但是他们所创建出来的对象则可能完全不同。

策略模式的目的是为算法提供抽象的接口。换言之,一个具体策略类把一个算法包装到一个对象里面,而不同的具体策略对象为一种一般性的服务提供不同的实现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值