设计模式—结构型模式之装饰器模式
设计模式—结构型模式之装饰器模式
适配器是连接两个类,可以增强一个类,装饰器是增强一个类。
向一个现有的对象添加新的功能,同时又不改变其结构。属于对象结构型模式。
创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
举例
比如我们有一个直播平台,提供了直播功能,但是如果不进行美颜,可能就比较冷清。所以美颜功能就是我们的增强,可以用装饰器来实现。
直播接口:
/**
* 直播接口
*/
public interface LiveBroadCastInterface {
void liveBroadcast();
}
直播类:
/**
* 实现直播接口
*/
public class SjdwzLiveBroadCast implements LiveBroadCastInterface{
@Override
public void liveBroadcast() {
System.out.println("我来直播了......");
}
}
如果没有美颜,可能就会比较冷清;所以我们可以提供一个装饰器,来为我们的直播进行增强。
直播装饰器接口:
/**
* 直播平台增强
*/
public interface LiveBroadCastDecoratorInterface extends LiveBroadCastInterface{
void enhance();
}
美颜装饰器如下:
/**
* 美颜功能装饰器
*/
public class BeautyLiveBroadCastDecorator implements LiveBroadCastDecoratorInterface{
private LiveBroadCastInterface liveBroadcast;
public BeautyLiveBroadCastDecorator(LiveBroadCastInterface liveBroadcast) {
this.liveBroadcast = liveBroadcast;
}
/**
* 增强的功能
*/
@Override
public void enhance() {
System.out.println("增加了美颜功能");
}
@Override
public void liveBroadcast() {
//对功能进行增强
this.enhance();
//还得要进行原功能
this.liveBroadcast.liveBroadcast();
}
}
测试类如下:
public class DecoratorTest {
public static void main(String[] args) {
SjdwzLiveBroadCast sjdwzLiveBroadCast = new SjdwzLiveBroadCast();
//不增强的话
sjdwzLiveBroadCast.liveBroadcast();
System.out.println("============增强功能===============");
//装饰器
BeautyLiveBroadCastDecorator beautyLiveBroadCastDecorator = new BeautyLiveBroadCastDecorator(sjdwzLiveBroadCast);
//增强的功能
beautyLiveBroadCastDecorator.liveBroadcast();
}
}
运行截图如下:
可以看到增强了功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效