java装饰者模式实现方式
时间: 2024-01-15 07:30:25 浏览: 30
在Java中,可以使用装饰者模式来动态地扩展对象的功能。下面是一种常见的装饰者模式的实现方式:
1. 定义一个接口(或抽象类)作为被装饰者和装饰者的共同接口。
```java
public interface Component {
void operation();
}
```
2. 创建一个具体的被装饰者类,实现共同接口。
```java
public class ConcreteComponent implements Component {
@Override
public void operation() {
System.out.println("执行原始操作");
}
}
```
3. 创建装饰者类,实现共同接口,并持有被装饰者对象的引用。
```java
public abstract class Decorator implements Component {
protected Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operation() {
component.operation();
}
}
```
4. 创建具体的装饰者类,继承装饰者类,并在操作中添加额外的功能。
```java
public class ConcreteDecorator extends Decorator {
public ConcreteDecorator(Component component) {
super(component);
}
@Override
public void operation() {
// 在执行原始操作之前或之后添加额外的功能
System.out.println("执行额外的操作");
super.operation();
}
}
```
5. 在客户端代码中使用装饰者模式来创建对象并调用方法。
```java
public class Client {
public static void main(String[] args) {
Component component = new ConcreteComponent(); // 创建原始对象
component.operation(); // 执行原始操作
Component decoratedComponent = new ConcreteDecorator(component); // 创建装饰者对象
decoratedComponent.operation(); // 执行添加了额外功能的操作
}
}
```
通过这种方式,我们可以在不修改原始对象的情况下,动态地为其添加额外的功能。