摘要:
一:一个目标 二:两种手段 三:八大原则 四:重构技法 五:从封装变化角度对模式分类 六:类图对比 对比所有模式的类图,几乎所有模式的结构都归属到:下面第三种类型 七:关注变化点和稳定点 八:什么时候不用模式 九:经验之谈 十:设计模式成长之路(4阶段) 阅读全文
摘要:
前提:领域规则模式 典型模式 一:解释器模式Interpreter (一)概念 (二)动机 (三)代码分析(加减运算) 0.表达式基类 1.构建变量表达式(叶子结点) 2.符号表达式(树结点基类) 3.符号表达式子类实现(树结点),进行执行 4.解析表达式(获取的是解析的表达式,不是结果) 5.表达 阅读全文
摘要:
一:概念 二:动机 三:代码讲解 (一)原代码 需求:想要增加一个新的功能 (二)visitor模式 >前提:能够预料到未来可能会为这整个类层次结构添加新的操作,但是我不知道要加多少操作,什么操作 1.预先设计Element基类 2.完善visitor基类 3.element子类实现 上面实现了:预 阅读全文
摘要:
前提:行为变化模式 典型模式 一:Command模式 (一)概念 (二)动机 (三)模式定义 (四)代码讲解 1.命令基类,定义接口 2.具体行为命令,继承自Command 3.命令组合 4.创建命令执行 (五)类图(结构) (六)要点总结 1.Command模式的根本目的在于“行为请求者”与“行为 阅读全文
摘要:
一:概念 二:动机 三:模式定义 四:代码讲解 (一)Request对象:携带请求信息 (二)ChainHandler基类处理者: (三)Handler具体处理对象 (四)构建链表 五:类图(结构) 六:要点总结 (一)Chain of Responsibility模式的应用场合在于“一个请求可能有 阅读全文
摘要:
一:概念 在应用Iterator模式之前,首先应该明白Iterator模式用来解决什么问题。或者说,如果不使用Iterator模式,会存在什么问题? 以上方法1与方法2都可以实现对遍历,这样有问题呢? 所以,Iterator模式的应用场景可以归纳为满足以下几个条件: 二:动机 三:模式定义 四:类图 阅读全文
摘要:
前提:数据结构模式 典型模式 一:组合模式 (一)概念 (二)动机 (三)模式定义 (四)代码讲解 1.抽象接口 2.两种类型之一:树形结构 2.两种类型之一:叶子节点 3.客户程序 4.实现构建树 问题:若是不用composite模式,如何实现? 会导致: (五)类图(结构) 类比文件系统: (六 阅读全文
摘要:
一:概念 二:应用场景 如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。 三:动机 四:模式定义 五:代码讲解 (一)需要保存状态的对象 补充: (二)外部保存对象状态的类 (三)使用 六:类图(结构) 七:要点总结 (一)备忘录(Me 阅读全文
摘要:
前提:状态变化模式 典型模式 一:State状态模式 (一)概念 (二)动机 (三)代码讲解 1.原代码 2.改进代码,将基类抽出 (四)模式定义 (五)类图(结构) (六)要点总结 1.State模式将所有与一个特定状态相关的行为都放入一个State的子类对象中,在对象状态切换时, 切换相应的对象 阅读全文
摘要:
一:概念 二:动机 三:模式定义 四:结构 五:与Facade模式比较 六:类图 七:要点总结 (一)将多个对象间复杂的关联关系解耦,Mediator模式将多个对象间的控制逻辑进行集中管理(定义一套调用机制的协议),变“多个对象互相关联”为“多个对象和一个中介者关联”,简化了系统的维护,抵御了可能的 阅读全文