作者dlikeayu (太阳拳vs野球拳)
看板OOAD
标题Re: [请益] 这种情况有比 Decorator 更好的模式吗?
时间Mon Dec 16 14:03:32 2013
这边想问个问题
在PHP使用时
好比说我的decorate有A,B,C
component为 X
之後如下包装
object = new X();
objecjt = new A(object);
objecjt = new A(object);
objecjt = new A(object);
objecjt = new A(object);
objecjt = new A(object);
objecjt = new A(object);
这样我就算装饰时没做任何事,只有被装饰後有多委任的功能
可是在测记忆体时却会愈来愈肥大
Object(A){Object(A){Object(A){Object(A){Object(A){Object(A){Object(X)}}}}}}
这在decorator的设计模式是正常的吗?
还是是语言的特性关系造成的呢?
我目的是想被装饰时就多该装饰的Method,
并不用改写什麽值
所以像这样是使用上的例外还是我不该用这设计模式来做我想做的目的
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.38.210
1F:→ dlikeayu :应该说,我这边故意一直重覆装饰A进来,但是却愈来愈 12/16 14:23
2F:→ dlikeayu :肥,而我的目的只是想要装饰A的额外的Method 12/16 14:23
3F:→ qrtt1 :这看起来比较适合去 PHP 问呗@@? 12/17 14:59
我要问的其中一个问题是
这是Decorator的特性吗?
因为每装饰一次就多包一次上一个自己
这样很占记忆体
※ 编辑: dlikeayu 来自: 111.249.154.151 (12/17 17:06)
4F:→ qrtt1 :这就像跟穿衣服一样,穿厚了、多了、就胖吗@@? 12/17 21:36
5F:→ qrtt1 :至於为什麽胖那麽多,是穿法的问题,还是衣服有问题? 12/17 21:37
不是
如果是每装饰一样就等於多穿一件衣服还好
但是现在是每装饰一次就等於再多背一个人在背後(真飘)
因为我直接print出装饰过几次的物件
它除了新的装饰外,还外包上一个自己
而上一个自己还会包上上一个自己
※ 编辑: dlikeayu 来自: 111.249.154.151 (12/18 01:01)
6F:→ qrtt1 :所以,这看起来是特定语言的问题了。建议前往 PHP 版 12/18 11:46
7F:→ qrtt1 :show 出你的实作细节,让大家一起讨论吧。 12/18 11:47
8F:→ TonyQ :你没把 implement 写出来不会有人看懂的啦... 12/18 11:51