其他分享
首页 > 其他分享> > 设计模式之装饰模式(结构型)

设计模式之装饰模式(结构型)

作者:互联网

1、简介

1.1 定义

装饰器模式(Decorator Pattern)增加一个装饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为装饰类的构造函数的参数,可以实现对现有对象功能的拓展,使类功能更加灵活。装饰模式属于结构型模式

1.2 组成结构

在这里插入图片描述

1.3 优缺点

优点:

缺点:

1.4 适用场景

1.5 与适配器模式的区别:

2、代码示例

/**
 * 抽象角色
 */
public interface Component {

    void operation();

}

/**
 * 具体角色,实现抽象角色,定义要被装饰器装饰的对象
 */
public class ConcreteComponent implements Component{

    public ConcreteComponent(){
        System.out.println("创建具体角色");
    }

    @Override
    public void operation() {
        System.out.println("调用具体角色的方法 operation()");
    }

}

/**
 * 抽象装饰角色,实现与抽象角色一致的接口
 */
public abstract class Decorator implements Component {

    private Component component;

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

    public void operation(){
        component.operation();
    }

}

/**
 * 具体装饰器,给
 */
public class ConcreteDecorator extends Decorator {

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

    public void operation() {
        super.operation();
        addFunction();
    }

    public void addFunction() {
        System.out.println("为具体角色增加的额外功能 addFunction() ~~~");
    }
}

public class DecoratorTest {

    public static void main(String[] args) {
        // 调用具体的角色的方法
        ConcreteComponent concreteComponent = new ConcreteComponent();
        concreteComponent.operation();

        // 通过装饰器调用具体的角色,并增加额外的功能
        ConcreteDecorator concreteDecorator = new ConcreteDecorator(concreteComponent);
        concreteDecorator.operation();
    }
}

标签:角色,Component,装饰,operation,设计模式,public,Decorator,结构型
来源: https://blog.csdn.net/qq_53316135/article/details/122631097