对代理模式和装饰模式异同点的理解
2015-12-02 10:19
387 查看
相同点
1.被代理类和代理类实现相同接口,被装饰类和装饰类同样实现相同接口。2.代理类以组合形式持有一个被代理类对象,装饰模式亦是如此。
不同点
1.名称不同。别笑,这真的是一个不同点,规范的命名能够让其他程序员直接了解你的意图,提高代码可读性。通常意义上讲,代理通常是对对象做访问控制,也可以说是限制,而装饰是在已有行为上增添新行为。换言之,我吃了加了樱桃的蛋糕,肯定吃到了蛋糕本身。而我让明星代理给明星传话,他未必会传。2.概念不同。装饰模式更接近继承的概念,没错,它设计出来确实是为了解决类爆炸问题,也并没有用继承。但是,加了樱桃的蛋糕是蛋糕,加了樱桃又浇了奶油的蛋糕也是蛋糕,它们是is a的关系。而明星代理并不是明星,他只是个传话的。设计模式本身是独立于程序的,我觉得思考设计模式的时候不要马上想到程序的语法和概念,设计模式,更多的是贴近生活场景。
我个人认为,学设计模式,要了解他们的结构和设计动机,这样有助于你更快理解他人的设计。同时又要忘记它们,不要拘泥于任何一种模式,东西学死了就不好用了。只要记得他们的最终目的并不要违背这个就可以。
相关文章推荐
- LeetCode-- Longest Palindromic Substring
- kafka 高吞吐量性能揭秘
- android杀掉指定包名的应用程序
- android 音频底层调试-tinyalsa
- 数据结构之创建二叉树
- Opencv——新版本2.4.2简介&FREAK和ORB特征描述子效果对比features2d
- android 从相册中获取图片设置成头像的问题:
- HTML 5怎么就成了RIA“杀手”?
- Hadoop 学习知识点总结
- 转载 :【非技术】谈谈简历那些事儿
- 【C++基础学习】Vector
- 百度2015前端研发笔试卷
- mongodb简介(转)
- jquery 插件应用 下拉框中带有搜索框
- C语言编程中生成随机数的入门教程
- LeetCode-- Implement int sqrt(int x)
- Web性能压力测试工具之ApacheBench(ab)详解
- 相信自己,2016新的开始
- mongodb3.0配置文件的相关说明
- Several ports (8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The serve