Java装饰器模式实例分析
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,今天小编给大家分享一下Java装饰器模式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了
千家信息网最后更新 2024年11月27日Java装饰器模式实例分析
今天小编给大家分享一下Java装饰器模式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
优点
1.装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
缺点
2.多层装饰比较复杂。
使用场景
1.扩展一个类的功能。
2.动态增加功能,动态撤销。
一、实现方式
假设一个场景,我们房间每天起床都要刷牙, 睡觉也要刷牙,刷牙的动作就是一个装饰器的作用,这样更利于我们的口腔健康。接下来我们就看看具体的装饰器如何实现。
1、每天生活的接口
package com.asurplus.common.decorator;/** * 每天的生活接口 */public interface Live { /** * 每天需要做的事情 */ void live();}
2、起床的实现类
package com.asurplus.common.decorator;import lombok.extern.slf4j.Slf4j;/** * 起床实现类 */@Slf4jpublic class GetUpLive implements Live { @Override public void live() { log.info("起床了"); }}
3、睡觉的实现类
package com.asurplus.common.decorator;import lombok.extern.slf4j.Slf4j;/** * 睡觉实现类 */@Slf4jpublic class SleepLive implements Live { @Override public void live() { log.info("睡觉了"); }}
4、装饰器类
package com.asurplus.common.decorator;import lombok.extern.slf4j.Slf4j;/** * 装饰器类 */@Slf4jpublic class LiveDecorator { private Live live; public LiveDecorator(Live live) { this.live = live; } public void live() { // 生活 live.live(); // 刷牙 brushTeeth(); } private void brushTeeth() { log.info("刷牙去咯"); }}
二、测试
package com.asurplus.common.decorator;/** * 装饰器模式 */public class TestMain { public static void main(String[] args) { // 起床 LiveDecorator getUp = new LiveDecorator(new GetUpLive()); getUp.live(); System.out.println(); // 睡觉 LiveDecorator sleep = new LiveDecorator(new SleepLive()); sleep.live(); }}
输出结果
可以看出,起床和睡觉,都刷了牙,从而实现了我们的装饰器模式。
以上就是"Java装饰器模式实例分析"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
模式
知识
篇文章
功能
动态
生活
实例
实例分析
分析
内容
场景
就是
接口
不同
复杂
很大
健康
接下来
事情
优点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
立体化推进网络安全工作保障
静安区无线网络技术口碑推荐
数据库如何删除插入的表
怎样更换服务器
黄龙软件开发
制定网络安全年度计划年度考核
服务器内存耗尽
上海轩盒网络技术服务是什么软件
网络安全相关工作汇报
独立服务器查询
湖北项目软件开发哪家专业
anywhere怎么打开数据库
网络技术专业的出路
怎么查服务器内存多少
csgo怎么老是连接不到服务器
澳洲网络安全就业
数据库怎样防止下载
近年来发生的网络安全事故
贵州数据网络技术分类服务标准
阿里互联网科技有限公司
《汽车网络技术》期末试卷
数据库数据定期覆盖
服务器怎么连接存储
sqlmap显示数据库名
石家庄哪些大学有软件开发
用服务器组建家庭NAS
免费网络技术教程网
常见的软件开发模型及其特点
伊春公司app软件开发多少钱
电脑上的网络安全密码是什么