已解决
设计模式—结构型模式之装饰器模式
来自网友在路上 166866提问 提问时间:2023-11-09 01:55:32阅读次数: 66
最佳答案 问答题库668位专家为你答疑解惑
设计模式—结构型模式之装饰器模式
适配器是连接两个类,可以增强一个类,装饰器是增强一个类。
向一个现有的对象添加新的功能,同时又不改变其结构。属于对象结构型模式。
创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
举例
比如我们有一个直播平台,提供了直播功能,但是如果不进行美颜,可能就比较冷清。所以美颜功能就是我们的增强,可以用装饰器来实现。
直播接口:
/*** 直播接口*/
public interface LiveBroadCastInterface {void liveBroadcast();
}
直播类:
/*** 实现直播接口*/
public class SjdwzLiveBroadCast implements LiveBroadCastInterface{@Overridepublic 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;}/*** 增强的功能*/@Overridepublic void enhance() {System.out.println("增加了美颜功能");}@Overridepublic 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();}
}
运行截图如下:
可以看到增强了功能。
查看全文
99%的人还看了
相似问题
- 频剪辑软件Corel VideoStudio 会声会影2024最新7大新全新功能解析
- 最新AIGC创作系统ChatGPT系统源码,支持最新GPT-4-Turbo模型,支持DALL-E3文生图,图片对话理解功能
- 【UE】用样条线实现测距功能(下)
- 10个容易被忽视的FastAPI实用功能
- 测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发
- 3.生成验证码 + 开发登录、退出功能 + 显示登录信息
- SMART PLC累计流量功能块(梯形积分法+浮点数累加精度控制)
- 多协议数据库管理软件 Navicat Premium 16 mac中文版功能
- 当前系统并无桌面环境,或无显示器,无法显示远程桌面,您需要自行安装X11桌面环境,或者使用终端文件功能
- .NET 主流 ORM 功能介绍 大全 最新
猜你感兴趣
版权申明
本文"设计模式—结构型模式之装饰器模式":http://eshow365.cn/6-35761-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 线性系统的激励和响应以及与系统特性的联系
- 下一篇: XShelll-修改快捷键-xftp-修改编辑器