装饰者模式
来源:互联网 发布:淘宝店铺导航设置 编辑:程序博客网 时间:2024/06/05 22:53
定义装饰者模式
- 装饰者模式:
- 动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的代替方案。
回顾上2章模式定义
- 策略模式:
- 定义了算法族,分别封装起来,让他们之间可以相互转换,此模式让算法的变化独立于使用算法的用户。
- 观察者模式:
- 定义了对象之间的一对多的关系,这样一来,当一个对象改变状态时,它所有的依赖者都会收到通知并自动更新。
开放 - 关闭原则
设计原则:类应该对扩展开放,对修改关闭
这看起来很矛盾,书本中有一个自问自答的解释:
问:对扩展开放,对修改关闭?听起来很矛盾。设计如何兼顾两者?
答:这是一个很好的问题。乍听之下,的确感到很矛盾,毕竟,越难修改的事物,就越难扩展,不是吗?但是,有一些聪明的OO技巧,允许系统在不修改代码的情况下,进行功能扩展。想想观察者模式,通过加入新的观察者,我们可以在任何时候扩展Subject(主题),而且不需要向主题中添加代码。
要点
装饰者和被装饰者对象有相同的类型。
可以用一个或多个装饰者包装一个对象。
既然装饰者和被装饰者有相同的超类型,所以在任何需要原始对象(被包装)的场合,可以用装饰过的对象代替它。
装饰者可以在所委托被装饰者的行为之前/或之后,加上自己的行为,以达到特定的目的。
对象可以在任何时候被装饰,所以可以在运行时动态的,不限量的用喜欢的装饰者来装饰对象。
0 0
- 装饰者模式(Derector)
- 装饰者模式
- Decorator 装饰者模式
- 装饰者设计模式
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式(Decorator)
- 装饰者模式
- 装饰者模式
- 装饰者模式
- 装饰者模式 DecoratorPattern
- 设计模式 - 装饰者
- 装饰者模式
- 装饰者模式
- 装饰者模式 - 2
- 装饰者模式
- 装饰者模式
- Mysql批量删除数据库
- python的编程环境
- 同步和异步的区别
- springboot+mybatis搭建可以运行的项目
- 欢迎使用CSDN-markdown编辑器
- 装饰者模式
- MySQL主从复制的原理及配置方法(比较详细)
- Flask在新浪SAE部署服务 写微信公众平台回复的功能
- 缓和曲线06七次四项式
- BUG in Windows 10 insider preview about onedrive
- 4.玩转Spring Boot Starter POMs 介绍
- 建立TCP连接一定需要三次握手的原因
- 返回参数二进制中 1 的个数
- 2017年深度学习十大趋势预测