作者luoqr (.....)
看板OOAD
标题Re: [其他] 请教设计
时间Fri Jul 2 20:29:52 2010
: 在这里您说 A 的角色是控制中心,
: 去使用 B (某个 Action) 跟任意其他种的 X, Y, Z 功能。
: 我觉得较不明确的是 B, X, Y, Z 的操作对象都是同一个 Subject 吗?
: 如果是的话,那不就只需要在它直接实作需要的 function 就好了?
: class Subject{
: function void b(m, n);
: function void x(o);
: function void y(s, t);
: }
: 有什麽特殊的理由,要将 Subject 本身的责任委外出来呢?
: 如果硬要统一,那就会像:
: class Subject {
: function Object execute(Action, ...args)
: }
: abstract class Action {
: function execute(Subject, ...args)
: }
应该说 X,Y,Z 像是个固定的流程
但X,Y,Z 可能在环境1里做的是X1,Y1,Z1的事情
在环境2里 做的是X2,Y2,Z2的事
要怎麽样去设计 随时可以去替换掉新版的 X,Y,Z
假设是一个产生资料和传送资料的系统好了 @@
X 是产生资料
Y则是维护这笔资料整个在整个流程中的状态
Z 则负责是传送资料
然後 A 提供了 X,Y,Z 三个不同功能各一个介面
由 A 来控制这些介面之间的互动
这样 X,Y,Z 只要各自去实作与 A 之间的介面 是不是就能抽换X,Y,Z?
目的是想在不去改 A 的情况下
(因为不管在哪个环境下 都是产生资料 维护资料 传送资料)
看是否能单纯只抽换各自的功能就好
只要在使用 A 之前 先把想用的实体X,Y,Z 传入 A 中
也把X,Y,Z要用到的参数在产生instance时一并设定到instance就好
端看X来说, 在产生X的实作时 就可以传入不同数量或型别的参数
只是这样子对於给 X,Y,Z的介面参数是不是就没那麽重要了?
(是不知道这样子好或不好@@ )
--
这真的是要靠经验累积啊 囧...Lv.1
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.225.133.70
1F:推 goodGG :state machine 07/02 20:33
2F:→ qrtt1 :怎麽重要的资讯在这篇才说orz 07/02 22:29
3F:→ luoqr :不好意思 表达不太清楚 ^^" 07/03 00:33
4F:推 leondemon :看起来像是用工厂模式系列... 07/04 10:14