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

    xiaoxiao2025-04-03  25

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

    掐准透明模式中的装饰者具体实现类中对于抽象构件方法的实现, 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);

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

    最新回复(0)