请选择 进入手机版 | 继续访问电脑版

热点推荐

查看: 115|回复: 3

装饰者模式

[复制链接]
  • TA的每日心情
    开心
    昨天 10:17
  • 签到天数: 288 天

    [LV.8]以坛为家I

    3万

    主题

    3万

    帖子

    10万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    105447
    发表于 2020-7-26 03:44:12 | 显示全部楼层 |阅读模式
    定义

    装饰者模式动态的将责任(功能)附加到独享上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

    设计原则


    • 类应该对扩展开放,对修改关闭
      目标时允许类容易扩展,在不修改现有代码的情况下,就可搭配新的行为。这样的设计
      具有弹性,可以应对改变,可以接受新的功能来应对改变的需求。
    说明


    • 利用继承达到“类型匹配”, 而不是利用继承获得“行为”
    • 装饰者和被装饰者有相同的“接口”,因为装饰者必须能取代被装饰者。
    • 通常装饰者模式使用重选ing类,但在Java中可以使用接口。
    要点


    • 继承属于扩展形式之一,但不见得达到弹性设计的最佳方式
    • 在我们的设计中,应该允许行为可以被扩展,而无须修改现有的代码
    • 组合和委托可用于在运行时动态的加上新的行为
    • 除了继承,装饰者模式也可以让我们扩展行为
    • 装饰者模式意味着一群装饰者雷,这些类用来包装具体组件。
    • 装饰者类反映出被装饰的组件类型(事实上,它们具有相同的类型,都经过接口或继承实现)
    • 装饰者可以在被装饰者的行为前面或后面加上自己的行为,甚至将被修饰者的行为整个取代掉,
      而达到特定的目的
    • 你可以用无数个装饰者包装一个组件。
    • 装饰者一般对组件的客户时透明的,除非客户程序依赖于组件的具体类型。
    • 装饰者会导致设计中出现许多小对象,如果过度使用,会让程序变得很复杂。
    实际举例


    • Java IO
    • 缓存与业务代码分离

    Java吧 收集整理 java论坛 www.java8.com
    回复

    使用道具 举报

    该用户从未签到

    4

    主题

    59

    帖子

    122

    积分

    注册会员

    Rank: 2

    积分
    122
    发表于 2020-7-29 00:56:47 | 显示全部楼层
    支持你哈...................................
    回复

    使用道具 举报

    该用户从未签到

    4

    主题

    58

    帖子

    120

    积分

    注册会员

    Rank: 2

    积分
    120
    发表于 2020-8-2 19:20:56 | 显示全部楼层
    佩服佩服!
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    68

    帖子

    138

    积分

    注册会员

    Rank: 2

    积分
    138
    发表于 2020-8-4 20:10:03 | 显示全部楼层
    非常好,顶一下
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表