java设计模式-装饰者模式


[toc]

装饰着模式(Decorator)

定义

装饰模式又名 包装(Wrapper)模式。装饰模式以对 客户端透明的方式 扩展对象的功能,是继承关系的一个替代方案。

装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在 装饰前和装饰后有什么不同。装饰模式可以在 不使用创造更多子类的情况下,将对象的功能加以扩展。

类图

装饰模式中的角色有:

抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。

具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类。

装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口。

具体装饰(ConcreteDecorator)角色:负责给构件对象“贴上”附加的责任。

实例

public interface Component {
    public void operation();
}

public abstract class Decorator implements Component{ }

public class ConcreteComponent implements Component{ @Override public void operation() { System.out.println(this.getClass().getName()+":operate");

<span class="o">}</span>

}

public class ConcreteDecorator extends Decorator{ public Component component; public ConcreteDecorator(Component component){ this.component = component; } public void operation() { component.operation(); System.out.println(this.getClass().getName()+":operat"); } }

/客户端:/ public class Client { public static void main(String args[]){ Component component = new ConcreteComponent(); Component decorator = new ConcreteDecorator(component); decorator.operation();

<span class="o">}</span>

}

/输出结果: //com.nemo.design.decorator.ConcreteComponent:operate //com.nemo.design.decorator.ConcreteDecorator:operat

装饰者模式在java io中的应用

nemotan /
Published under (CC) BY-NC-SA in categories 设计模式  tagged with 设计模式