范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java设计模式系之装饰器模式

  一、概述
  装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能。
  不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的。
  而实际上,装饰器模式和代理模式的实现方式基本一致,只是在目标的存在上有些差别,这个后面我们具体讲述。二、初步分析
  上面提到了两点:涉及的是单方目标是抽象的
  我们来想一下,所谓单方主要指的是在整个装饰器模式中不存在双方调用,要解决的也不是双方调用的问题,而是解决单方提供对外服务的问题,这个单方在自行对外提供服务时,功能不足,或者我们需要额外添加一些新功能,这时就可以使用装饰器模式,来对这个单方进行增强。
  目标抽象的意思是因为我们需要通过实现接口的方式来进行增强,因此目标必须抽象为接口。三、实例
  下面我们用我们生活中的一个例子来说明,我们用房子来作为目标:
  房子接口:House/**  * 目标接口:房子  */ public interface House {     void output(); }
  具体的房子:DonghaoHouse/**  * 房子实现类  */ public class DonghaoHouse implements House {     @Override     public void output() {         System.out.println("这是董浩的房子");     } }
  具体的房子:DongliangHouse/**  * 房子实现类  */ public class DongliangHouse implements House {     @Override     public void output() {         System.out.println("这是董量的房子");     } }
  装饰器:Decoratorpublic class Decorator implements House {     private House house;     public Decorator(House house){         this.house = house;     }     @Override     public void output() {         System.out.println("这是针对房子的前段装饰增强");         house.output();         System.out.println("这是针对房子的后段装饰增强");     } }
  测试类:public class Clienter {     public static void main(String[] args) {         House donghaoHouse = new DonghaoHouse();         House decorator = new Decorator(donghaoHouse);         decorator.output();     } }
  执行结果为:这是针对房子的前段装饰增强 这是董浩的房子 这是针对房子的后段装饰增强四、解析
  通过上面的例子我们可以看出,除了测试类外,只剩下接口和实现类了,即使是装饰器类也是目标接口的一个字类,这更能说明单方的说法,模式中所有的类都属于目标方。至于目标是抽象的更是如此,只有目标是抽象的,才可以使用装饰器模式来进行增强。
  上面我们说过装饰器模式与代理模式基本相同,只存在少许差别。
  我们需要从概念上了解代理和装饰的区别:代理是全权代理,目标根本不对外,全部由代理类来完成。装饰是增强,是辅助,目标仍然可以自行对外提供服务,装饰器只起增强作用。
  上面两点体现到代码实现中是这样的: 代理模式public class Proxy implements House {     private House house;     public Decorator(){         this.house = new DonghaoHouse();     }     @Override     public void output() {         System.out.println("这是针对目标的前段增强");         house.output();         System.out.println("这是针对目标的后段增强");     } }
  装饰模式public class Decorator implements House {     private House house;     public Decorator(House house){         this.house = house;     }     @Override     public void output() {         System.out.println("这是针对房子的前段装饰增强");         house.output();         System.out.println("这是针对房子的后段装饰增强");     } }
  看出来了吗,装饰器中持有的目标实例是从构造器传入的,而代理中持有的目标实例是自己创建的。
  那么这里又出现一个区别,代理模式和装饰器模式虽然都依赖于目标接口,但是代理针对的目标实现类是固定的,而装饰器模式可以随意指定,也就是说目标是可以自有扩展的。五、使用场景
  装饰器模式就是使用在对已有的目标功能存在不足,需要增强时,前提是目标存在抽象接口。六、总结
  我们要明白代理模式和装饰器模式的区别,区分二者的使用场景,如下图:
  对比图

连苹果自己都嫌弃?iPhoneSE3红色128GB版最低3268元到手在3月初,苹果发布了自家的一款超低端产品,也就是苹果iPhoneSE的第三代。这款产品沿用了iPhone8时代的外观设计,采用了TouchID作为操作指令的核心,屏幕也没有采用全面免费的网页爬取工具免费智能全自动抓取任意网页数据工具网页爬取工具,什么是网页爬取工具。网页爬取工具有什么用?最常见的就是大家用网页爬取工具,收集网页上的数据内容。再也不用手动地去复制粘贴。大大地提升了效率,也有人用网页爬取工具爬取网EA寻求卖身,博通要买VMware,特斯拉在沪扩招研发人员日报君发自凹非寺量子位公众号QbitAI大家好,今天是5月23日星期一。今天有哪些值得关注的其他科技大新闻?话不多说,直接来看。今日大新闻博通欲收购VMware据路透社消息,芯片五智慧水务保证城乡居民用水品质工业互联网作为新一代信息技术与制造业深度融合的产物,日益成为新工业革命的关键支撑和深化互联网先进制造业的重要基石,对未来工业发展产生全方位深层次革命性影响。工业互联网平台作为工业智整垮日本的是宁德时代汽车是个极其重要的产业,本质原因就2个字贵多。最便宜的宏光mini也要3万块,普通的车都是10万块起步,单价比手机高多了。单价的贵乘上销量的多,中国2021年汽车产值就达到8。67要造撞不断的车!比亚迪发布CTB技术,首搭车型海豹开启预售继电池不自燃的口号后,比亚迪又喊出了打造撞不断的电动汽车的新口号。5月20日,比亚迪发布了CTB电池车身一体化技术。而首款搭载了CTB技术的e平台3。0车型海豹也开启预售,预售价格紧急!高薪技术企业急需大量博士,博士证书吃香了博士在职博士考博科技高薪技术企业急需博士证书,有得就能收米!博士证书也能换钱1电子信息方面的博士软件技术微电子技术计算机及网络技术通信技术广播电视技术新型电子元器件信息安全技术智能智能手机市场砍单消息不断,71家消费电子公司业绩下滑,高端市场突围或成关键?21世纪经济报道记者张赛男实习生谢韫力上海报道据媒体最新报道,中国三大手机厂商小米OPPO和vivo已通知供应商,2022年46月以后的供货量将比此前计划减少2成左右。结合中国信通半导体公司PK江丰电子对战有研新材半导体芯片公司PK江丰电子对战有研新材这两家公司到底谁最牛?牛到哪?1靶材PK江丰电子走出国门,进入一流厂商有研新材国内一流厂商2精密设备江丰电子已经量产,有前景,有国产替代阿斯麦EA也想卖掉自己曾经与迪士尼苹果亚马逊等公司谈判从年初微软收购动视暴雪这条大新闻开始,越来越多的厂商都爆出了收购的相关消息,比如Bungie育碧等等,不过业内知名的EA却一直鲜有消息。近日,有外媒爆料称,其实EA早就于迪士尼苹果探索售价799的华为5G手机壳来了,真能让华为5G手机重燃希望?前言这几天有个新闻令我感觉到惊讶。这个新闻的内容是,一款有第三方厂商数源科技(Soyealink)研发生产的5G通信手机壳正式发布,这款手机壳支持的是华为手机,也就是说这款手机它实
华为matepad11可以插电话卡吗matepad11支持手写笔吗华为matepad11为用户搭载2K分辨率LCD屏幕,提供了非常不错的屏幕显示效果,那么华为matepad11可以插电话卡吗?今天就跟着小编一起了解一下吧。华为matepad11可iOS15。2Beta2为何都说续航越用越好?看已升级用户都怎么说?iOS15。2Beta2已经更新了两天,这两日网上不断有消息流出该版本续航越用越好,那么该版本真的有网传的这么好用吗?看看已升级的用户都怎么说。用户一来电无备注解决了,接电话终于不为什么阿里巴巴会斥资百亿在乌兰察布市建立大数据平台?截止10。16最新数据,中国内蒙古乌兰察布市大数据产业强势崛起格局初步形成,政策支持带到该市本身的优势进行发展。围绕建设草原云谷的信息产业发展战略,充分发挥区位交通电力气候地质光缆拍照和音质好的千元机有哪些?千元机就不推荐购买大品牌了,因为大品牌的千元机性价比很低,所以建议购买二三线品牌。一般来说千元机的拍照和音质都比较一般,除非这个品牌的主推机型就是千元机,那么就可以考虑360手机了电商消亡是必然?实体门店的春天来了吗?只要政府不命令禁止电商,电商就不会消失。电商打击实体店最主要是因为国家的大政策方向都是先发展后治理,电商面临整顿治理的窗口即将到来,那些靠低价卖假货的,以及电商可以逃税的,都会被挤iPhone14有望使用M系列处理器?手机性能大变革?每日一篇,点赞爆款!iPhone13发布之后,因为外观的问题遭到大家吐槽了很久很久。各式各样的bug,首发批次出现各种各样的问题,边框可以放进去一张A4纸什么的。但是不耽误今年iP20公里掉电50公里,河南气温大降新能源车遇到过冬难题大河报记者耿子腾祁驿寒潮来了,随着郑州的最低气温急降到4左右,新能源汽车也迎来了一年一度的低温考试。郭先生上个月刚买了一台新能源车,平时就从高新区开到陇海路附近,这几天发现续航掉了聪明人为啥买中端机不买旗舰机?行内人告诉你三个原因,学到了现在的手机市场是非常繁荣的,各种类型价位的机型都应有尽有,像千元机旗舰机中端机等等,可以选择的空间非常大。但是聪明的人都爱选中端机,而不选旗舰机,为什么呢?行内人告诉你三个真实的原小米12终于公示!不过劝你别买首批,四大原因很现实高通已经正式宣布骁龙技术峰会会在11月30日12月2日举办,旗下最新的SoC产品也将正式发布,对于新款SoC的命名并未最终确定,不过如果延续上一代的命名方式,可以暂且称其为骁龙89其实,没有哪份工作真能干到退休高傲公子202111101735刚读了AI财经社的一篇文章说没人能在腾讯干到退休。腾讯员工平均年龄29岁,还未到35岁就会被优化,高管除了创始人马化腾,也大多在50岁之前就退休了。铁路物流充分释放铁路发展红利11月1日,中国国家铁路集团有限公司正式启动铁路双11电商黄金周快件运输。在11月1日至20日电商网络购物高峰期,铁路部门积极适应电商物流小批量快送达高附加值的市场需求,充分利用高