装饰者模式

代码详解:【设计模式】Java 设计模式之装饰者模式(Decorator)_java 装饰者模式-CSDN博客

java 复制代码
// 抽象构件角色
public interface Component {
    void operation();
}

// 具体构件角色
public class ConcreteComponent implements Component {
    @Override
    public void operation() {
        System.out.println("执行具体构件对象的操作");
    }
}

// 装饰角色
public class Decorator implements Component {
    protected Component component;

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

    @Override
    public void operation() {
        if (component != null) {
            component.operation();
        }
    }
}

// 具体装饰角色A
public class ConcreteDecoratorA extends Decorator {
    public ConcreteDecoratorA(Component component) {
        super(component);
    }

    @Override
    public void operation() {
        super.operation();
        addedFunctionA();
    }

    public void addedFunctionA() {
        System.out.println("为构件对象添加功能A");
    }
}

// 具体装饰角色B
public class ConcreteDecoratorB extends Decorator {
    public ConcreteDecoratorB(Component component) {
        super(component);
    }

    @Override
    public void operation() {
        super.operation();
        addedFunctionB();
    }

    public void addedFunctionB() {
        System.out.println("为构件对象添加功能B");
    }
}

装者模式的应用:

-mybatis 里的缓存:

相关推荐
2301_8049475813 分钟前
nginx
java·服务器·nginx
柒.梧.21 分钟前
零基础吃透Java核心基础:JDK/JRE/JVM全解析+跨平台原理
java·开发语言·jvm
sheji341627 分钟前
【开题答辩全过程】以 基于Java的宠物酒店管理系统设计与实现为例,包含答辩的问题和答案
java·开发语言·宠物
ServBay28 分钟前
彻底重绘Spring Boot性能版图,资源占用缩减80%
java·spring boot·后端
威风的虫43 分钟前
LangGraph的介绍
java·开发语言
康小庄1 小时前
Java阻塞队列——用法及常用场景
java·开发语言·数据库·spring boot·spring·jetty
yy.y--1 小时前
Java多线程实例:输出线程名20次
java·开发语言
SakitamaX2 小时前
Tomcat介绍与实验
java·tomcat
Y001112362 小时前
Day24—IO流-2
java·开发语言