装饰器模式

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

一、装饰模式的结构


装饰器模式

在装饰模式中的各个角色有:

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

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

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

* 具体装饰(Concrete Decorator)角色:负责给构件对象贴上附加的责任。

二、源代码

Component:

<code>public interface Component {
void sampleOperation();
}/<code>

Decorator:

<code>public class Decorator implements Component {
private Component component;

public Decorator(Component component){
this.component = component;
}

public Decorator(){

}

@Override
public void sampleOperation() {
component.sampleOperation();
}
}/<code>

ConcreteCompont:

<code>public class ConcreteComponent implements Component {
@Override
public void sampleOperation() {

}
}/<code>

ConcreteDecorator:

<code>public class ConcreteDecorator extends Decorator {

@Override
public void sampleOperation() {
super.sampleOperation();
}
}/<code>

三、装饰模式应当在什么情况下使用

1.需要扩展一个类的功能,或给一个类增加附加责任。

2.需要动态地给一个对象增加功能,这些功能可以再动态地撤销

3.需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。


装饰器模式


分享到:


相關文章: