首页 > 代码库 > 设计模式(八) : 结构型模式--装饰模式
设计模式(八) : 结构型模式--装饰模式
装饰模式的目的是为了给一个对象动态的增加一些功能。装饰对象和被装饰的对象实现同一个接口,装饰对象持有被装饰对象的实例。
类图:
示意性代码:
package com.javadesignpattern.Decorator; public interface Component { void sampleOperation(); }
package com.javadesignpattern.Decorator; public class ConcreteComponent implements Component{ public void sampleOperation() { // TODO Auto-generated method stub System.out.println(ConcreteComponent.class + ": sampleOperation function"); } }
package com.javadesignpattern.Decorator; public class Decorator implements Component{ Component component; public Decorator(Component component){ this.component = component; } public void sampleOperation() { // TODO Auto-generated method stub component.sampleOperation(); System.out.println(Decorator.class + " : sampleOperation function"); } }
package com.javadesignpattern.Decorator; public class ConcreteDecorator extends Decorator{ Decorator dec; public ConcreteDecorator(Decorator dec){ super(dec.component); this.dec = dec; } public void sampleOperation(){ super.sampleOperation(); System.out.println(ConcreteDecorator.class + " : sampleOperation function"); } }
package com.javadesignpattern.Decorator; public class Client { public static void main(String[] ags){ Component componemt = new Decorator(new ConcreteComponent()); componemt.sampleOperation(); System.out.println("--------------------"); Component componemt1 = new ConcreteDecorator(new Decorator(new ConcreteComponent())); componemt1.sampleOperation(); System.out.println("--------------------"); } }
装饰模式以这样的形式出现:
new Decorator1(new Decorator2(new Decorator3(new ConcreteComponent())))
装饰模式在什么场景下使用:
1. 需要扩展一个类的功能
2. 动态的给一个对象增加一些功能
3. 需要一些扩展类的功能,但是有很多类,这样使得继承变得不太现实。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。