`
xiandaoyan
  • 浏览: 21362 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

建造者模式学习笔记

 
阅读更多

建造模式是对象的创建模式。它可以将一个产品的内部表象与产品的生成过程分割开来,从而可以是一个建造过程生成具有不同的内部表象的产品对象。

由于建造零件的过程很复杂,因此,这些零件的建造过程往往被“外部化”到另一个乘坐建造者的对象里,建造者对象返还给客户端的是一个全部零件都建造完毕的产品对象。它将产品的结构和建造过程对客户端隐藏起来。

建造模式的四种角色:

抽象建造者(Abstract Builder)角色,给出一个抽象解耦,以规范产品对象的各个组成成分建造。具体建造者类必须实现这个接口锁要求的两种方法:一种是建造方法,另一种是结果返还方法。有多少零件就应该有多少建造方法。

具体建造者(Concrete Builder)角色,担任这个角色的是与应用程序紧密相关的一些类,它们在应用程序调用下创建产品实例。它要完成的任务包括:

A.实现抽象建造者锁声明的接口,给出一步一步地完成创建产品实例的操作;

B.在建造完成之后,提供产品实例。

导演者(Director)角色,调用具体建造者角色以创建产品对象,它与客户端打交道。

产品(Product)角色,它是建造中的复杂对象。

下面以一个发送邮件的系统为例,分析集中角色的关系,它的类图如下:

类图结构

其中抽象建造者角色是Builder类,它的两个子类GoodbyeBuilderWelcomeBuilder作为具体建造者,导演角色DirectorAutoMessage作为复杂产品的抽象类,它的两个子类GoodbyeMessageWelcomeMessage作为复杂产品对象。

客户端负责创建导演者和具体建造者对象。

空的零件建造方法:具有不相同数目的零件的产品也可以使用建造模式,如果一些产品零件较少,可以使用空的零件方法来忽略没有的零件。

省略抽象建造者角色:如果可以系统只有一个建造者角色的话,可以省略掉抽象建造者角色。

省略导演角色:在具体建造者角色只有一个的情况下,如果已经省略了抽象产品角色,那么可以进一步省略掉导演者角色。此时导演者类中的产品构造方法由具体产品角色自己实现。

 

参考文献:《Java与模式》,阎宏,第十九章,建造者模式。

 

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics