[模式] 裝飾者模式(decorator)只有一種結構嗎?

看板OOAD作者時間12年前 (2013/01/10 17:04), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/5 (看更多)
今天上課講到decorator pattern,我有個疑問就是,為什麼設計上不寫成這樣 abstract class 主餐 { protect 副食品 list; abstract public int cost(); } class 豬排 : 主餐 { public override int cost() { return 130 + all list cost; } } ... abstract class 副食品 { } class 味增湯 : 副食品 { public override int cost() { return 50; } } ... 那個all list cost在哪邊做先不管,我的意思是UML繼承架構不要讓副食品繼承主餐, 而是讓而是用 1--------------* 把主餐與副食品連起來,我覺得這樣更加直覺,但 教授說這兩者完全不同,decorator有pipeline的概念; 而在我的想法中 副食品 變成 互為獨立,失去順序的概念,請問有沒有什麼情況一定要用decorator才能完成的case? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.153.23 ※ 編輯: worldxxi 來自: 114.45.153.23 (01/10 17:05)

01/10 20:51, , 1F
如果你有兩份主餐呢?
01/10 20:51, 1F

01/11 07:01, , 2F
就是多一個class其他都不用動,恩..還是我沒聽懂意思
01/11 07:01, 2F

01/12 22:09, , 3F
恩,應該說一個套餐有兩份主餐,cost就不能這樣做
01/12 22:09, 3F

01/12 22:09, , 4F
下面那篇解釋得很清楚
01/12 22:09, 4F

01/13 07:02, , 5F
可是原始的Decorator好像也不支援兩份主餐,裝飾不是
01/13 07:02, 5F

01/13 07:03, , 6F
都只對一個物件不斷new上去嗎?
01/13 07:03, 6F
文章代碼(AID): #1GxeGXMH (OOAD)
討論串 (同標題文章)
文章代碼(AID): #1GxeGXMH (OOAD)