Spring设计模式之装饰器模式
http://baijiahao.baidu.com/s?id=1583400270221855830&wfr=spider&for=pc
装饰器模式
前言
假设有这么一种情景,有两个程序员,一个Java、一个Python,都只负责一件事:编程。突然有一天,领导要求,在编程之前要做设计,在编程之后要进行测试。
大家最先想到的,肯定就是要求这两个程序员各自在"编程"这个方法前后加上"设计"、"测试"的功能。但是在编程中违反了"开闭原则",程序员原来的"编程"这个方法运行的很好,不要动他(修改关闭),但是你可以另找人来实现新的功能(扩展开放)。我们用代码实现一下。
实现
程序员接口:
接口
实现类:
实现类1
实现类2
如果我们需要设计和测试功能,首先想到的就是在这两个类里面加代码,这样就违反了开闭原则。我们用装饰器模式来实现。
装饰器静态类:
静态类
子类:
装饰器1
装饰器2
测试结果:
测试
扩展
看到这,一定会有人说,装饰器模式和代理模式、适配器模式、模板方法模式看起来好像啊,有什么区别么?
装饰器:原来的方法(编码)已经不能满足新需求了,需要对其进行扩展(设计、测试),理论上我们可以对原方法无限地装饰下去,比如我们可以在"设计"之前再加个"需求分析",在"测试"之后再加个"部署实施"等等。也可以去掉某些装饰器。
适配器:原来的接口已经不兼容了,适配器在原对象和目标对象中间,通过对原对象兼容的那个接口,通过转换,调用目标对象那个不兼容的接口。举个不恰当的例子,一个英国人去买饭,听不懂中国服务员说什么(接口不兼容),这时候来了一个翻译(适配器),他能与英国人交流(接口适配成功),然后翻译不干活,而是通过中国服务员的活动,将结果再返回给英国人。
代理:你们要实现什么功能我不管,我只负责调用该调用的方法。有点类似前台MM,你们干什么我不管,你就告诉我你找谁,我给你找去。
模板方法:如果说装饰器是在原有的方法上扩展很多方法,那么模板方法模式就是将原来很多固定的方法抽出到父类里。一个是加法,一个是减法
Spring设计模式之装饰器模式相关推荐
- 设计模式学习----装饰器模式
这两天本来是自在学习java collection Framework的Fail Fast底层机制,看到核心的部分时,突然意识到设计模式的问题,上大学到现在我还没有真正理解过设计模式的概念,于是用了大 ...
- 【设计模式】装饰器模式的使用
问题来源 我们在进行软件系统设计的时候,有一些业务(如下图,一些通用的非功能性需求)是多个模块都需要的,是跨越模块的.把它们放到什么地方呢? 最简单的办法就是把这些通用模块的接口写好,让程序员在实现业 ...
- go设计模式之装饰器模式
go设计模式之装饰器模式 再写这篇文章时,我已经看了很多其他人发表的类似文章,大概看了这么多吧. 亓斌的设计模式-装饰者模式(Go语言描述) jeanphorn的Golang设计模式之装饰模式 七八月 ...
- python中的装饰器、装饰器模式_python 设计模式之装饰器模式 Decorator Pattern
#写在前面 已经有一个礼拜多没写博客了,因为沉醉在了<妙味>这部小说里,里面讲的是一个厨师苏秒的故事.现实中大部分人不会有她的天分.我喜欢她的性格:总是想着去解决问题,好像从来没有怨天尤人 ...
- python 设计模式之装饰器模式 Decorator Pattern
#写在前面 已经有一个礼拜多没写博客了,因为沉醉在了<妙味>这部小说里,里面讲的是一个厨师苏秒的故事.现实中大部分人不会有她的天分.我喜欢她的性格:总是想着去解决问题,好像从来没有怨天尤人 ...
- 零基础学习设计模式之装饰器模式(配套视频)
零基础学习设计模式之装饰器模式 定义 在不改变目标结构的情况下,动态的给对象增加功能 举例 如房子装修.相片加相框等,都是装饰器模式. 基本组件 抽象构件(Component)角色:定义一个抽象接口以 ...
- 详解设计模式:装饰器模式
装饰器模式(Decorator Pattern)也称为包装模式(Wrapper Pattern),是 GoF 的 23 种设计模式中的一种结构型设计模式.装饰器模式 是指在不改变原有对象的基础之上,将 ...
- javascript设计模式之装饰器模式(结构型模式)
javascript设计模式之装饰器模式 js的设计模式分为创建型模式,结构型模式和行为模式 结构模式描述了如何组合对象以提供新的功能. 装饰器模式是一种常见的结构型模式,我们可以以一个基础对象为基础 ...
- 设计模式之装饰器模式详解
设计模式之装饰器模式详解 文章目录 设计模式之装饰器模式详解 一.什么是装饰器模式 二.装饰器模式的角色组成 三.装饰器模式通用写法示例 四.装饰器模式业务中的应用举例 五.装饰器模式优缺点 一.什么 ...
- 【设计模式】--- 装饰器模式、静态代理模式和动态代理模式
文章目录 1 引子 2 业务场景介绍 3 静态代理模式 4 装饰器模式 5 动态代理模式 5.1 Proxy --- 具体的代理对象生成组件 5.2 InvocationHandler --- 封装被 ...
最新文章
- swust oj 962
- 增大apache 2的最大连接数
- WINCE5.0+2443 camera中断不能进来的原因
- source insight 4.0 括号尾部提醒 及 常用快捷键
- python删除字符串中的字母_在Python中删除字符串中的大写字母
- Nodejs前端服务器压缩图片
- 计算机网络子网划分路由配置实验报告,完整的子网划分与路由交换实验报告 珍藏版哦...
- CISCO路由器连接ADSL之PPPoE配置
- C#中符号的作用备忘
- 数据结构实现时所需的成员变量、标准对外接口
- BN(Batch Normalization)层原理与作用
- fcm算法matlab实现,fcm算法matlab
- 北航计算机考研 跨考,北航计算机考研经验谈_跨考网
- ndows 内存诊断工具,windows内存诊断工具有什么作用
- 产品经理的职责和分类
- REPEATABLE-READ隔离级别 事务中无法读到其它事务提交了的最新数据
- 测试银行卡号必看(长度限制及卡号字符类型总结)
- 想写一个供教育培训机构排课和教师管理的软件
- 图像增强及直方图均衡化在图像去雾上的应用(附matlab代码)
- qq聊天记录备份与恢复