看板 OOAD 關於我們 聯絡資訊
: 在這裡您說 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
goodGG :state machine 07/02 20:33
qrtt1 :怎麼重要的資訊在這篇才說orz 07/02 22:29
luoqr :不好意思 表達不太清楚 ^^" 07/03 00:33
leondemon :看起來像是用工廠模式系列... 07/04 10:14