作者worldxxi ()
看板OOAD
标题[模式] 装饰者模式(decorator)只有一种结构吗?
时间Thu Jan 10 17:04:30 2013
今天上课讲到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)
1F:推 mars90226 :如果你有两份主餐呢? 01/10 20:51
2F:→ worldxxi :就是多一个class其他都不用动,恩..还是我没听懂意思 01/11 07:01
3F:→ mars90226 :恩,应该说一个套餐有两份主餐,cost就不能这样做 01/12 22:09
4F:→ mars90226 :下面那篇解释得很清楚 01/12 22:09
5F:→ worldxxi :可是原始的Decorator好像也不支援两份主餐,装饰不是 01/13 07:02
6F:→ worldxxi :都只对一个物件不断new上去吗? 01/13 07:03