妙博客

主机评测 香港服务器 洛杉矶VPS测评

设计模式-JAVA-装饰模式(Decorator)

装饰模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地将对象添加到现有对象中。装饰器提供了一种灵活的方式来扩展类的功能,而不需要通过继承来实现。

下面是一个简单的装饰模式的示例:

首先,我们定义一个接口 Component,它是被装饰对象的基础接口:

public interface Component {
    void operation();
}


然后,我们定义一个具体的实现类 ConcreteComponent,它实现了 Component 接口:

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

接下来,我们定义一个装饰器类 Decorator,它也实现了 Component 接口,并且包含一个 Component 类型的成员变量,用于保存被装饰对象的引用:

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

最后,我们定义具体的装饰器类 ConcreteDecorator,它继承自 Decorator,并且在 operation 方法中添加了额外的功能:

public class ConcreteDecorator extends Decorator {
    public ConcreteDecorator(Component component) {
        super(component);
    }
    @Override
    public void operation() {
        super.operation();
        System.out.println("ConcreteDecorator operation");
    }
}

现在,我们可以使用装饰器来扩展 ConcreteComponent 的功能:

Component component = new ConcreteComponent();
component.operation(); // 输出 "ConcreteComponent operation"
Component decorator = new ConcreteDecorator(component);
decorator.operation(); // 输出 "ConcreteComponent operation" 和 "ConcreteDecorator operation"


在这个示例中,我们首先创建了一个 ConcreteComponent 对象,然后使用 ConcreteDecorator 对象来装饰它。当我们调用 decorator.operation() 方法时,它会先调用被装饰对象的 operation() 方法,然后再添加额外的功能。这样,我们就可以动态地扩展 ConcreteComponent 的功能,而不需要修改它的代码。



JAVA7大原则和23种设计模式汇总,点我查看

Copyright Your 142132.com Rights Reserved. 赣ICP备17010829号-2