: 在这里您说 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的接口参数是不是就没那么重要了?
(是不知道这样子好或不好@@ )