Re: [請益] 這種情況有比 Decorator 更好的模式嗎?

看板OOAD作者 (酒池肉林夜夜生科)時間11年前 (2013/10/12 22:51), 編輯推噓4(409)
留言13則, 4人參與, 最新討論串3/6 (看更多)
※ 引述《bill42362 (酒池肉林夜夜生科)》之銘言: : A { : methodX(); : methodA(); : } : B { : methodX(); : methodB(); : } : C { : methodX(); : methodC(); : } 我想要的效果大概是這樣: 以 facebook 的分享來舉例 A 是分享圖片的物件,B 是影片的物件,C 是文章的物件 三個物件都有一個 display() 的 method (對應 methodX()) 但是 A 的實作是貼圖,B 的實作是顯示某一畫格, C 的實作則是顯示文字。 A 有專屬的 zoom() method (對應 methodA()) B 則是 play() (methodB()) C 是 copy() (methodC()) 而我想動態加上的 methodY(), methodZ() 則可能是根據 權限決定是否加上的 share(), vote(), edit(), delete() 比如甲因為是作者,所以為他加上 edit() 和 delete() 同一個物件乙看到時可能只有 vote() 而丙因為是甲的好友,所以可以 share(), vote() 希望這樣有解釋的更清楚一點, 我希望實作出來的系統也就跟這個例子差不多了, 所以如果這樣的想法從根本上就錯也請直接吐槽 囧 再次感謝大大花時間看完!! -- 想你的時候 不一定能告訴你 如果不告訴你 也能會意 那我們就是有 真正的默契 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 121.215.129.5

10/13 04:24, , 1F
你應該先考慮把share() vote edit()這些function
10/13 04:24, 1F

10/13 04:25, , 2F
做成接收A B C這些type的non-member function
10/13 04:25, 2F

10/13 12:28, , 3F
個人想法:就算動態加上去一樣,在調用時一樣要判斷
10/13 12:28, 3F

10/13 12:29, , 4F
直接把要用的function全寫進去,判斷寫在裡面會比較
10/13 12:29, 4F

10/13 12:30, , 5F
單純好懂 Orz
10/13 12:30, 5F

10/13 16:52, , 6F
我的目標是只有 new 的時候判斷,全寫進去的話就會有
10/13 16:52, 6F

10/13 16:53, , 7F
一堆重複的 share() vote() edit() 如果真的沒辦法
10/13 16:53, 7F

10/13 16:54, , 8F
也只好這樣 TT
10/13 16:54, 8F

10/13 16:55, , 9F
L大: 如果做成 non-member 是不是就表示 ABC 裡的東
10/13 16:55, 9F

10/13 16:55, , 10F
西都要變成 public 了? @@"
10/13 16:55, 10F

10/13 20:18, , 11F
看起來沒有動態的必要,這是有沒有權限的問題啊xd
10/13 20:18, 11F

10/13 20:33, , 12F
你需要的是一個好的權限架構吧(思
10/13 20:33, 12F

10/13 21:10, , 13F
提供set/get function就好了啊 為什麼要做成public?
10/13 21:10, 13F
文章代碼(AID): #1IMM7fdz (OOAD)
討論串 (同標題文章)
文章代碼(AID): #1IMM7fdz (OOAD)