Builder形式学习笔记

Builder模式学习笔记

 适用情况:当系统中要生成一个复杂对象,而这个复杂对象的各种零件又有不同的式样且零件的装配过程比较复杂时,希望装配过程对系统来说是透明的,变更装配顺序或装配用到的零件对系统也是透明的。同时希望不同式样零件的生产与零件的装配是分离的。

 

 解决方案:首先,有一个负责装配零件的Director,它实现了如何组装零件,并且也只有它知道需要什么零件。其次定义一个生产零件的抽象Builder,它定义了生产各种零件的接口。最后有一系列具体的Builder来实现这个抽象Builer,用于生产不同样式的零件。

   

类图:

 
Builder形式学习笔记
 



 

  GOF中的例子:



Builder形式学习笔记
 

   交互图:
  
Builder形式学习笔记
 

   实际应用:比如你要设计一个汽车生产者(Director),它知道怎么生产汽车,并且知道装配顺序并且设计了汽车的零件构成。而汽车零部件由不同的厂商(Builder)生产,但每个公司都可以生产所有的零件类型,只是他们的式样不同而已。那么在这个系统中,只要递给汽车生产者的零件生产厂商变了,那生产出来的汽车样式就不同了,但汽车的结构是不变的。修改汽车生产者中的construct方法可以改变汽车的结构或生产顺序(特别是当某种零件的生产变得依赖于另一种零件时),但系统的其它code不用为之改变。

 

   与其它设计模式的比较:TBD

1 楼 xurichusheng 2012-01-12  
具体例子可以参照:
http://smartfool.iteye.com/blog/71175