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

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("这是针对房子的后段装饰增强");     } }
  看出来了吗,装饰器中持有的目标实例是从构造器传入的,而代理中持有的目标实例是自己创建的。
  那么这里又出现一个区别,代理模式和装饰器模式虽然都依赖于目标接口,但是代理针对的目标实现类是固定的,而装饰器模式可以随意指定,也就是说目标是可以自有扩展的。五、使用场景
  装饰器模式就是使用在对已有的目标功能存在不足,需要增强时,前提是目标存在抽象接口。六、总结
  我们要明白代理模式和装饰器模式的区别,区分二者的使用场景,如下图:
  对比图

红米K40为啥稳定版不能上DC调光?垃圾手机。买了肠子都悔青了小米官方工程师回复过这个问题,意思是,经过测试,红米k40这块屏幕开启dc调光后显示效果很不理想,所以该功能不会加入稳定版,只会加入开发版让会折腾的用户自新能源车年检,竟被收尾气检测费?检测站要检就检,不检就做不了!监管部门发话眼下,新能源车市场越来越热,却也出现了新的问题。前不久,江西九江的一位纯电动新能源汽车车主,在办理年检时被收取尾气检测费用,车主对此十分困惑,这是怎么回事呢?江西九江新能源车年检被小米为什么一定要做电动汽车?小米手机,已经是世界第二了。要再成长,估计有点难度了。因为前面就是三星。小米手机还要向三星购买屏幕和内存。如果小米威胁到三星的地位,三星会毫不犹疑地温柔告诉小米,你要悠着点!应该说华为硬扛苹果,新品发布会提前一天,将发布14寸的超大手机有的厂商面对苹果的期间发布会是避而远之,比如三星下半年的旗舰之前跟苹果是同月,后来为了避免正面冲击,提前了一个月。但是国产机都喜欢在苹果发布会的时候往上冲一把。前几天小米宣布新品发3米内可同时给4部手机充电,摩托罗拉新一代隔空充电技术进步巨大现如今不少手机都支持无线充电,但是支持远距离无线充电的隔空充电技术,才真正代表了手机充电的未来。在这方面,华为小米和摩托罗拉已经走在了最前列,其中摩托罗拉不仅和华为小米一样在上半年从4199元跌至2899元,144Hz5000mAh256GB,高性能手机加速退场智能手机的定价有些时候也是一种学问,一般来说,产品堆料凶猛的产品,堆料凶猛一般都会受到市场青睐,比如红米K40和真我GTNeo等主打性价比的产品,但也有例外,比如华为旗下的某些产品数字人民币来到了服贸会!跟总台央视记者一起沉浸式体验手机上的软钱包硬钱包今年金融服务展一大亮点就是首次设立数字金融示范区,现场开通数币大道,多家金融机构围绕数字人民币便捷普惠安全三大特性,以实物图文互动形式实现沉浸式场景体验。观众来到这里感受最时尚最接华为入局打印机市场,将如何引领行业发展?点击上方关注,每天为您分享行业最新资讯。对于打印机市场,华为似乎要正式发力了。日前,网友发现,智慧生活APP中意外出现了华为打印机的设备选项,图片中设备正面印有HUAWEIlogo配助听器,就只想配一只可以吗?这是根据本人的听力损失和不同场景的需求还有自己的经济条件等,两只耳朵听力都有损失,建议要同时两耳佩戴助听器。两耳可以保持听觉平衡,有方向感和立体感。使两耳的言语分辨率保持稳定。消除九阳电器,质量不过关,售后不到位,保修期内上门一次收服务费60,你怎么看?所有产品,都无法保证在保修期内绝对没有故障,如果故障概率在预设的小概率范围内,则不能为一个品牌一个产品型号做出有质量问题的结论。前面这样说,不是说九阳产品的质量行还是不行,因为九阳为什么做外贸的大都选择美国服务器?外贸建站总的来说还是选择美国主机比较好,美国服务器的优势1带宽充足互联网几乎可以说是诞生于美国,美国也是全球互联网的中流砥柱,世界各地的光缆都来自美国。美国的带宽资源不知道已经是国
天融信获得首批国家信息安全服务安全运营类一级资质中证网讯(王珞)近日,中国信息安全测评中心公布首批安全服务资质安全运营类一级获证企业名单,天融信(002212)获得首批国家信息安全服务安全运营类一级资质。至此,天融信已获得国家信苹果起诉爱立信在5G技术专利谈判中使用强硬策略品玩12月21日讯,据新浪科技引市场消息,苹果已对电公司爱立信提起诉讼,指控该公司在5G电信专利许可谈判中使用强硬策略。该诉讼于上周五提交给美国德克萨斯州东部地方法院,指控爱立信违明明距离地球最近的行星是金星,为什么全世界却都赶着去探测火星?明明距离地球最近的行星是金星,为什么全世界却都赶着去探测火星?人们在衡量一件事是否值得去做时,往往会通过两个方面的因素去考虑,一个是操作性,另外一个就是代价,操作性决定着可行性,而为什么近几年我国没有发射载人航天飞船了?自从2003年杨利伟神舟五号,到2016年我国共进行6次载人航天,2016年那次是人数最多时间最长的一次,可那之后载人航天却戛然而止,其实只是因为暂时没必要了。载人航天的木器其实只有没有什么好玩的软件可推荐?我自认为喜欢尝试各种应用。今天我给大家推荐几款我比较喜欢的应用。我想一些喜欢玩机的人,老司机都会喜欢的。第一个,VIP浏览器,顾名思义,可以看所有主流视频网站的VIP视频。比如就爱想下载魔兽世界,结果发现六十多g,请问为啥这么大,这不是一个老游戏吗?该怎么解决?你好,我来回答您的问题。魔兽世界作为一款老牌网游,已经15年了。从60级年代到120级年代,经历了数个版本更替和资料更新,内容也从最初的3G到达现在的65G。2020年,最新9。0有什么软件,可以将文字自动转换成声音,且读出来声音不会很生硬?你好,很高兴回答你的问题,你的问题是用什么软件可以将文字自动转化为声音,而且读出来不会很生硬,这个问题,我觉得很好回答啊,我给你分享几个办法吧。第一个牛片网。在线生成声音,只要把文2G网络时代的你有什么难忘的回忆?浏览了一晚上移动梦网,花了80多块钱。现在各种WIFI覆盖,无线路由,4G流量包仿佛一夜间,再见已枉然。科技发展,社会进步,沟通方式变化翻天覆地,已经多久没有动笔写字了?鸿雁传书至正式获批!台积电70亿美元新建工厂确定了本文原创,请勿抄袭和搬运,违者必究在美国的邀请下,台积电最终决定赴美建厂,而日本也向台积电发出了邀请。有消息透露,其实日本早在2019年就向台积电发出了邀请,可是却被台积电拒绝了。网络电视盒子哪个品牌好?2022年最新五大电视盒子排行榜上周,嘉文数码做了一个小小的问卷调查,发现现在几乎只有25的家庭还在交有线电视费,剩余75的人,大都是直接使用电视盒子,有小部分的人甚至很少看电视,只在需要的时候使用手机投屏使用。京东方推出行业首个技术品牌面板产业竞争升级本报记者吴清李正豪北京报道12月21日,京东方(BOE)正式对外推出中国半导体显示(面板)领域的首个技术品牌。此举或将表明,在传统的产能和专利储备等竞争外,技术品牌正在成为面板行业