作者bill42362 (酒池肉林夜夜生科)
看板OOAD
标题Re: [请益] 这种情况有比 Decorator 更好的模式吗?
时间Sat Oct 12 22:51:15 2013
※ 引述《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
1F:推 legendmtg :你应该先考虑把share() vote edit()这些function 10/13 04:24
2F:→ legendmtg :做成接收A B C这些type的non-member function 10/13 04:25
3F:推 tails32100 :个人想法:就算动态加上去一样,在调用时一样要判断 10/13 12:28
4F:→ tails32100 :直接把要用的function全写进去,判断写在里面会比较 10/13 12:29
5F:→ tails32100 :单纯好懂 Orz 10/13 12:30
6F:→ bill42362 :我的目标是只有 new 的时候判断,全写进去的话就会有 10/13 16:52
7F:→ bill42362 :一堆重复的 share() vote() edit() 如果真的没办法 10/13 16:53
8F:→ bill42362 :也只好这样 TT 10/13 16:54
9F:→ bill42362 :L大: 如果做成 non-member 是不是就表示 ABC 里的东 10/13 16:55
10F:→ bill42362 :西都要变成 public 了? @@" 10/13 16:55
11F:推 qrtt1 :看起来没有动态的必要,这是有没有权限的问题啊xd 10/13 20:18
12F:→ qrtt1 :你需要的是一个好的权限架构吧(思 10/13 20:33
13F:推 legendmtg :提供set/get function就好了啊 为什麽要做成public? 10/13 21:10