1、定义一个接口Component

public interface Component {  
    void operation();  
}

2、创建一个实现了Component接口的简单类SimpleComponent

public class SimpleComponent implements Component {  
    @Override  
    public void operation() {  
        System.out.println("SimpleComponent operation.");  
    }  
}

3、创建一个装饰器基类Decorator,它也实现了Component接口,并持有一个对Component对象的引用

public abstract class Decorator implements Component {  
    protected Component component;  
  
    public Decorator(Component component) {  
        this.component = component;  
    }  
  
    @Override  
    public void operation() {  
        if (component != null) {  
            component.operation();  
        }  
    }  
}

4、创建一个具体的装饰器类,例如ConcreteDecoratorA,它添加了一些额外的功能

public class ConcreteDecoratorA extends Decorator {  
    public ConcreteDecoratorA(Component component) {  
        super(component);  
    }  
  
    @Override  
    public void operation() {  
        super.operation(); // 调用被装饰对象的operation方法  
        addedFunctionA(); // 添加额外的功能A  
    }  
  
    private void addedFunctionA() {  
        System.out.println("ConcreteDecoratorA added function.");  
    }  
}

5、编写一个测试类来展示如何使用装饰器

public class DecoratorPatternDemo {  
    public static void main(String[] args) {  
        // 创建一个简单组件  
        Component simpleComponent = new SimpleComponent();  
        // 使用装饰器A装饰简单组件  
        Component decoratedComponent = new ConcreteDecoratorA(simpleComponent);  
        // 调用被装饰后的组件的operation方法  
        decoratedComponent.operation();  
    }  
}

Java装饰器模式,装饰器模式通常通过创建一个接口和一个或多个实现了该接口的类来开始,然后创建装饰器类,这些类也实现了相同的接口插图

本站无任何商业行为
个人在线分享 » Java装饰器模式,装饰器模式通常通过创建一个接口和一个或多个实现了该接口的类来开始,然后创建装饰器类,这些类也实现了相同的接口
E-->