avatar

目录
装饰模式

个人博客

http://www.milovetingting.cn

装饰模式

模式介绍

装饰模式也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。

模式定义

动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式生成子类更为灵活。

使用场景

需要透明且动态地扩展类的功能时。

简单使用

定义Component

java
1
2
3
4
5
public abstract class Component {

public abstract void operate();

}

定义具体的Component

java
1
2
3
4
5
6
7
8
public class ConcreteComponent extends Component {

@Override
public void operate() {
System.out.println("ConcreteComponent operate");
}

}

定义Decorator

java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public abstract class Decorator extends Component {

private Component component;

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

@Override
public void operate() {
component.operate();
}

}

定义具体的Decorator

java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class ConcreteDecorator extends Decorator {

public ConcreteDecorator(Component component) {
super(component);
}

@Override
public void operate() {
operateA();
super.operate();
operateB();
}

public void operateA() {
System.out.println("operateA");
}

public void operateB() {
System.out.println("operateB");
}

}

调用

java
1
2
3
4
5
6
7
8
9
public class Main {

public static void main(String[] args) {
Component component = new ConcreteComponent();
Decorator decorator = new ConcreteDecorator(component);
decorator.operate();
}

}

输出结果

Code
1
2
3
operateA
ConcreteComponent operate
operateB
文章作者: milovetingting
文章链接: http://www.milovetingting.cn/2020/02/18/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E8%A3%85%E9%A5%B0%E6%A8%A1%E5%BC%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 milovetingting

评论