随笔分类 - 设计模式
对于设计模式的一些个人认识
摘要:近日 见同事正在看 高焕堂新书 《UML+OOPC 嵌入式C语言开发精讲》偶然发现他对COR模式存在严重误解。废话少说 ,具体如下: 在他的大作 32.5 章节里 用到该模式代码如下:#include "lw_oopc_kc.h"#include "ex32-il.h"CLASS(LED_P0){ IMPLEMENTS(IL); void (*init)(LED_P0*); IL* next;};...
阅读全文
摘要:昨天晚上看书时,又顺手翻了翻 《重构》记的07年第一次看到它的样章时 是那样的震撼,那样的激动。哦 原来我一直苦苦寻找的答案都在这里,原来写程序时,不知道一个函数该多大合适 ,不知道对于逻辑重复的问题 该怎么有效解决,不知道。。。 呵呵 有那么多的未知,那么多的迷惘。最大的痛苦 莫过于 明明知道程序写的不优雅,却苦无解决之道。 对于有很多人把它和《设计模式》放在同一个高度,开始时自己也有很多怀疑...
阅读全文
摘要:上篇文章里对本模式几乎没有说什么,只是推荐大家读了怪怪的一篇文章,这几天一直在思考本模式。现将自己的总 结写下来,欢迎大家指正。 就像我上一篇文章里提到的一样,这个模式确实很难正确理解。MS很简单,但一写出来就不对。其实这个名字翻译的 不太好,如果翻译为 “响应链模式”我想更好理解一点。应用本模式应该注意以下几点。 1: 动态的响应请求,而且是多个都有可能处理该请求,没有一...
阅读全文
摘要:1 意图:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象能处理该请求为止。 2:为何使用? 这个模式,确实是看起来容易,但准确理解却很困难,很多时候我们其实更应该使用表模式而不是它。关于这一点 在总结中会在具体说一说。回到原题吧,A 解耦 请求的发送者与接受者,使发送者不需要知道太多的接受者信息。B...
阅读全文
摘要:意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及 支持可撤消的操作。 很迷惑,看了之后不知道在说什么。如果这样说,我想理解的更清楚些 。本模式把“发出命令的责任和执行命令的责任分割开,委派给不同的对象”。或者我们也可以这样理解: “请求”即 方法,命令 如“打球” 这就是一个方法,一个请求。我们可以把这个方法提到类的层次...
阅读全文
摘要:意图:将对象组合成树形结构以表示“部分---整体”的层次结构,本模式使得用户对单个对象和组合对象的使用具有一致性。 呵呵,说的很明白了 为了简化 使用单个对象与组合对象时的复杂性。看了它的意图应该可以理解不少了。 为什么使用? 1:在开发中,客户经常要对单个对象与组合对象 区别对待,这样就导致客户部分的代码有复杂性的臭味。 2:组合对象变化(如再组合一个单个对象)导致客...
阅读全文
摘要:意图:动态地给一个对象添加一些额外的职责,就增加一些功能来说,本模式比生成子类更为灵活。 为什么使用? 1: 我们经常使用继承来实现功能的拓展,本来这样一般也没什么问题,但如果需要拓展的种类很多,那么肯定生成很 多子类。这还不是最致命的,很多时候还需要这些功能子类的组合,如果这时候我们还使用继承,那么这会导致类 爆炸。如何使“对象功能的扩展”能够根据需要来动态地实现同时又避...
阅读全文
摘要:意图: 将一个类的接口转换为客户希望的另一种接口,从而使原来接口不匹配而无法在一起工作的两个类能够一起工作。 为什么使用呢? 这个模式是比较简单的,第一次看GOF的书时,就感觉比较好理解。不知道大家是否有同样理解,因为它的意图已 经很好的回答了 我们为什么要使用它。不知道大家有过这样的经历没有,我们有时遇到两个没有关系的类组合在一起 使用,由于接口不...
阅读全文
摘要:意图:将抽象部分与实现部分分离 ,使他们都可以独立变化 估计大家看了这个意图后,基本是不明白在说什么,分离 是指 它们能够独立变化,或者有一定的弱耦合。抽象呢 “存在于多个实体中的概念性的联系” 多个对象如果具有相同的概念性联系,那么它们就可以通过一个共同的类来描述,如果一些类具有共同的概念性联系 那么可以通过一个共同的抽象类来描述。以上是 阎宏说的 ,应该比较好理解 ...
阅读全文
摘要:学习 使用设计模式也快两年了,中间也看了很多书,也看了很多 网上的帖子。现在,我也把自己的理解写出来和大家分享一下,有不对的地方请大家指正。废话少说,先从门面模式开始吧。 意图:为子系统中的一组接口提供一个一致的界面,该模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 这是GOF 定义的 意图,看了以后 可能还是很模糊,不知道到底该模式有什么好处,为什么要使用它。那好,...
阅读全文

浙公网安备 33010602011771号