作者mgtsai (战车引擎保修官)
看板CSSE
标题Re: [问题] 反design pattern的见解
时间Fri Feb 16 17:56:04 2007
※ 引述《H45 (!H45)》之铭言:
: 我想封装性并不全然消失
: --
: 推 tinlans:其实我要说的破坏封装性,是指 house 被迫 open 给 02/12 15:26
: → tinlans:visitor 的部分,因为 visitor 本身跟 house 是分离的。 02/12 15:27
我的观点是,封装性须要利用一些方式加以处理
如果封得太死的话,反而会引发出一些麻烦
一般而言,面对不同模组之间的封装性问题
我自己会依赖 Facade 来处理
至於模组内部各 class 之间,我就不太要求一定要封装
在这样的原则下,我会对 class 结构区分为两类:
* 一类为结构类 class,作为系统运作时资料面的结构
* 一类为行为类 class,定义操作结构类 class 时的动作与过程
在一般的应用中,结构类 class 由於在模组内被广泛使用
我自己的作法是不封装结构类 class,模组内的所有 class 都知晓整个结构
这样子作的用意是,相对而言,结构还是比较不会变动
而行为部分则会因为系统功能的多寡而随之变动
(比如客户会多要求,能不能统计某某某资讯之类的需求)
面对这种需要开高弹性的地方,我会把它摆进行为类 class 中处理
而当遇到需要 Visitor pattern 的时机
几乎都是针对结构类 class 进行 traversal
在这种情况下,配合我针对这两类 class 的处理原则
使用 Visitor pattern 所遇到的封装性破坏问题,就不再是重点
反正资类面的结构就是公开来让模组内的所有 class 知晓
如果,还是得要加以封装的话
这时可能得要用上 Mediator pattern 来隐藏结构性的问题
不过,当问题处理到这种层级时,就有点过於复杂
如果案件规模没有大到一定的程度,这种搞法,就有点杀鸡用牛刀的感觉
先讲到这里
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.245.88.236