Re: [其他] 請教設計

作者: luoqr (.....)   2010-07-02 20:29:52
: 在這裡您說 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的介面參數是不是就沒那麼重要了?
(是不知道這樣子好或不好@@ )

Links booklink

Contact Us: admin [ a t ] ucptt.com