为什么半透明模式不能对同一对象进行多次装饰

为什么半透明模式不能对同一对象进行多次装饰

掐准透明模式中的装饰者具体实现类中对于抽象构件方法的实现,
Component component,componentSB,componentBB; //全部使用抽象构件定义
component = new Window();
componentSB = new ScrollBarDecorator(component);
componentBB = new BlackBorderDecorator(componentSB);
componentBB.display();
这是透明模式:当调用componentBB的display方法的时候,会接着调用componentSB里的display方法,然后调用component里的display方法,这里面是有个大前提的,就是display是最开始抽象构件里就有的方法。
但是你反观半透明模式,调用的方法已经不是最开始抽象构件里就有的方法了,是它自己后面新增的方法了,已经不满足这个大前提了,所以自然不能实现对同一对象的多次装饰。
Document  doc; //使用抽象构件类型定义
doc = new PurchaseRequest();
Approver newDoc; //使用具体装饰类型定义
newDoc = new Approver(doc);

半透明模式强调的是调用新增的方法,用具体的装饰类型来定义装饰之后的对象。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值