当前位置: 首页 > wzjs >正文

网站内容资源建设网站文章关键字密度

网站内容资源建设,网站文章关键字密度,网页翻译器在线翻译,网站建设柚子网络科技装饰器设计模式(Decorator Pattern) 也叫包装设计模式,属于结构型模式,它是作为现有的类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构 给对象增加功能,一般两种方式&#…
  • 装饰器设计模式(Decorator Pattern)

    • 也叫包装设计模式,属于结构型模式,它是作为现有的类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构

    • 给对象增加功能,一般两种方式,继承或关联组合,将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为来增强功能,这个就是装饰器模式,比继承模式更加灵活

    • 以动态、透明的方式给单个对象添加职责,但又能不改变其结构

    • JDK源码里面应用最多的就是IO流,大量使用装饰器设计模式

      在这里插入图片描述

  • 角色(装饰者和被装饰者有相同的超类Component)

    • 抽象组件(Component)
      • 定义装饰方法的规范,最初的自行车,仅仅定义了自行车的API
      • InputStream
    • 被装饰者(Concrete Component)
      • Component的具体实现,也就是我们要装饰的具体对象
      • 实现了核心角色的具体自行车
      • FileInputStream、ByteArrayInputStream
    • 装饰者组件(Decorator)
      • 定义具体装饰者的行为规范,和Component角色有相同的接口,持有组件(Component)对象的实例应用
      • 自行车组件都有名称和价格
      • FilterInputStream
    • 具体装饰物(Concrete Decorator)
      • 负责给构件对象装饰附加的功能
      • 比如喇叭、防爆胎等
      • BufferedInputStream、DataInputSteam
  • 代码实战示例

    /*** 通用组件*/
    interface Bike {String getDescription();int getPrice();
    }/*** 具体的被装饰者(Concrete Component)*/
    class BigBike implements Bike {private String description = "大号自行车";@Overridepublic String getDescription() {return this.description;}@Overridepublic int getPrice() {return 200;}
    }/*** 装饰者组件*/
    class BikeDecorator implements Bike {private String description = "我只是装饰器,啥都不表示,子类帮我传递";@Overridepublic String getDescription() {return this.description;}@Overridepublic int getPrice() {return 0;}
    }/*** 具体装饰物:防爆胎*/
    class BSCBikeDecorator extends BikeDecorator {private String description = "增加50元的防爆胎";private Bike bike;public BSCBikeDecorator(Bike bike) {this.bike = bike;}@Overridepublic String getDescription() {return bike.getDescription() + "," + this.description;}@Overridepublic int getPrice() {return bike.getPrice() + 50;}
    }public class Main {public static void main(String[] args) {Bike bigBike = new BigBike();bigBike = new BSCBikeDecorator(bigBike);bigBike = new BSCBikeDecorator(bigBike);System.out.println(bigBike.getDescription());System.out.println(bigBike.getPrice());}
    }
    
  • 优点

    • 装饰模式与继承关系的目的都是要扩展对象的功能,但装饰模式可以提供比继承更多的灵活性
    • 使用不同的具体装饰类以及这些装饰类的排列组合,可以创造出很多不同行为的组合,原有代码无须改变,符合“开闭原则”
  • 缺点

    • 装饰模式增加了许多子类,如果过度使用会使程序变得很复杂(多层包装)
    • 增加了系统的复杂度,加大学习与理解的难度
  • 装饰器模式与桥接模式对比

    • 相同点都是通过封装其他对象达到设计的目的,和对象适配器也类似,有时也叫半装饰设计模式
    • 没有装饰者和被装饰者的主次区分,桥接和被桥接者是平等的,桥接可以互换,不用继承自同一个父类
    • 桥接模式不用使用同一个接口;装饰模式用同一个接口装饰,接口在父类中定义

文章转载自:

http://FyIdlnMN.grpfj.cn
http://RxhDFTJO.grpfj.cn
http://M6TbKRRb.grpfj.cn
http://47nfRB5w.grpfj.cn
http://vAStiYK9.grpfj.cn
http://nN7c174K.grpfj.cn
http://eOxLrSNf.grpfj.cn
http://1zSZWU0y.grpfj.cn
http://QDUIw0HU.grpfj.cn
http://HqYwCY7J.grpfj.cn
http://Qz5ixQSB.grpfj.cn
http://jz46fkH1.grpfj.cn
http://jx7Hx9G0.grpfj.cn
http://HrAtR5Xp.grpfj.cn
http://MlV1otkk.grpfj.cn
http://p7qDhCgn.grpfj.cn
http://G42YrnIY.grpfj.cn
http://KY7iyNnJ.grpfj.cn
http://spBlKdWB.grpfj.cn
http://IwjIfvF3.grpfj.cn
http://WufrNhdr.grpfj.cn
http://aQNgR5u7.grpfj.cn
http://LptRvj8k.grpfj.cn
http://kgj5ij8b.grpfj.cn
http://GpUkx0B0.grpfj.cn
http://el1mw4fm.grpfj.cn
http://UadXOC6u.grpfj.cn
http://oGkkK42M.grpfj.cn
http://P6FYrhwc.grpfj.cn
http://pdiVSwGZ.grpfj.cn
http://www.dtcms.com/wzjs/677460.html

相关文章:

  • 自贡网站开发公司黑龙江建设局网站
  • 咸宁网站建设网络公司电子商务网站建设与管理期末考试题
  • 五莲建设监理有限公司网站交互设计是什么意思
  • 手机微信网站网站开发一年费用总计
  • 做网站全是别人的链接软件开发培训学校哪的好
  • 公众号开发专业深圳百度seo优化
  • 德州网站制作哪家好武陟外贸英文网站建设
  • 网站多语言界面建设方案wordpress 图片轮播
  • 医院网站运营方案广饶网站制作
  • 如何让做网站台州电子商务网站开发
  • 娄底市网站建设制作wordpress 描述代码
  • 网站建设预付款比例江苏省水建公司官网
  • 商丘网站制作电话杭州网站建设响应式
  • 服务器做两个网站百度账号注册申请
  • 做图软件官方网站网站你懂我意思正能量晚上下载
  • 招商网站搭建费用最近的战争新闻大事
  • 响应式网站的缺点在虚拟主机上建设多个网站
  • 丽水网站建设哪家好网站广告代码怎么添加
  • 是什么网站建设极客 pthyon 做网站
  • 做网站jijianjianzhan网站建设和维护视频
  • 免费做网站凡科湖北网站设计制作开发
  • 深圳网站优讳化wordpress标签样式表
  • 网站开发与桌面应用开发兰考网站建设
  • 网站建设 seo模块重慶网站开发
  • 手机网站制作良心服务flash网站模板修改
  • 中小企业公共服务平台网站建设企业网站建设一条龙多少钱
  • 网站ui设计包括哪些原则网站的交互体验
  • 闭站保护期间网站能够打开吗网页设计好学吗
  • 烟台百度网站排名wordpress 主题制作 评论
  • 哪儿能做邯郸网站建设网站皮肤是怎么做的