Re: [模式] 装饰者模式(decorator)只有一种结构吗?

楼主: worldxxi   2013-01-13 07:01:16
谢谢q大的回复,但是我还是不太懂,先说一下,我并没有一定要说我的想法
比较好,只是想了解一下差异,在您比较两者差异的时候我的想法被当作
不能有输入,似乎不太公平,如果要比较应该有同样的立足点,同时,我修改class名称
让它看起来比较舒服,我直接修改在下面(引文中修改)。
P.S.
会一直有疑问是因为我总觉得,两者的结构是完全等价的,但是可以用多型解决的问题
以那么多前人的经验不可能硬要弄出新的pattern,所以somehow我的想法一定有缺陷无法
应付变动,而我就是想要知道那个问题是什么?
※ 引述《qrtt1 (有些事,有时候。。。)》之铭言:
: ※ 引述《worldxxi ()》之铭言:
: : 今天上课讲到decorator pattern,我有个疑问就是,为什么设计上不写成这样
: : abstract class 主餐
: : {
: : protect Decorator list;
: : abstract public int cost();
: : }
: : class 猪排 : 主餐
: : {
: : public override int cost()
: : {
price=130;
foreach(decorator in list){
price = decorator.cost(price);
}
return price;
: : }
: : }
: : ...
abstract class Decorator
: : {
: : }
class 味增汤 : Decorator
: : {
: : public override int cost(price)
: : {
//handle price
return newPrice;
: : }
: : }
: : ...
//实际使用长成这样
main(){
unDecorator = new 某主餐();
unDecorator.addDecorator(new 味增汤);
unDecorator.addDecorator(new 优惠时段);
: : 那个all list cost在哪边做先不管,我的意思是UML继承架构不要让副食品继承主餐,
: : 而是让而是用 1

Links booklink

Contact Us: admin [ a t ] ucptt.com