贊助廠商

娛樂城推薦

首頁

刊登資訊

  • 刊登者:匿名
  • 時間:2021-06-04 04:50:10

尚未解答OOAD- 這種情況有比 Decorator 更好的模式嗎?

OOAD- 這種情況有比 Decorator 更好的模式嗎?

小弟最近遇到一個設計上的瓶頸

目前已有架構大致如下

A {
methodX();
methodA();
}

B {
methodX();
methodB();
}

C {
methodX();
methodC();
}

如上,三個物件有一個名稱相同但實作不同的 methodX()
並分別有名稱不同的 methodA(), methodB(), methodC()

現在希望為這三個物件加上一些可選擇的 methodY(), methodZ(), etc.
並且是在執行期間動態的加上去

1) Decorator pattern:
創造新的 Y, Z 物件為 drcorator,就可以用 new Y(new A()) 來達成
動態附加 methods.
缺點:這樣 Y, Z 物件要把所有的 method[A-C, Z]() 寫進去,以後要
增加 D 物件的話 Y, Z 物件都要修改。

2) Strategy pattern:
將實作不同的 methodX() 和 method[A-C]() 抽出來,創造一個 O 來
接收 strategy[A-C],將 method[YZ]() 用條件式判斷要不要執行

O (strategy){
methodX() { return strategy.methodX(); }
methodY() { if(...) return _methodY(); }
...
}
缺點:所有要動態加上的 method 都要寫在 O 裡,得到一個超龐大的 O...


請問各位這樣的情況有沒有更好的解決方法?
有查過 mixin pattern 但是在我使用的語言似乎沒有 native 支援的方法。

感謝回覆!!

--
想你的時候 不一定能告訴你
如果不告訴你 也能會意
那我們就是有 真正的默契

--

0個答案 OOAD- 這種情況有比 Decorator 更好的模式嗎?

其他問題

友站連結