幸运星空

Lucker的程序人生

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

(根据MSDN Webcast相关课程整理)

生成器模式的缘起:

一个类中主结构(将各个成员组合在一起的构建方法)基本稳定,但内部的几个组成部分可能经常存在变化。

GOF:将一个复杂对象的构建与其表示相分开,使得同样的构建过程可以创建不同的表示。

clip_image002

构成主类的某引动部分成员PartA和B是常变化的,而创建器的算法方式不变,客户程序通过Director的Construct方法,传入不同的生成器,从而完成不同类型对象的创建。

clip_image004

以下示例通过生成器模式可以方便的产生各种风格的房子。只需要实现该风格房子的生成器,并将其作为参数传给CreateHouse方法就可以啦。

其中的具体类是经常需要变化的部分:

clip_image006

据生成器产生相应的对象,这部分是不需要经常变动的:

clip_image008

客户程序调用方法:

clip_image010

当添加一种新风格的房子时,以上方法还需要在客户程序中修改传入的参数类型,这不是最佳方法,我们其实还可以利用.Net的反射机制动态加载,从而使客户程序不需要依赖类库层的对象。

clip_image012

《完》

posted on 2011-12-16 17:26  Lucker  阅读(458)  评论(0编辑  收藏  举报