• Head First 设计模式笔记(第六章 命令模式 & 第七章 适配器模式)


    第六章 命令模式 p191~233, 第七章 适配器模式 p234~273.

    概述

    命令模式, 将所有的操作封装成统一的Execute()接口.
    适配器模式, 里面包含了适配器模式, 外观模式, 将原有接口转成新的接口. 适配器模式是1:1的关系, 外观模式是N:1的关系.

    命令模式

    操作的种类很多, 具体的细节也不一致, 如何实现一个执行引擎执行所有操作的行为, 以及如何实现undo操作.

    将操作统一为一个最简单的Execute()接口.

    适配器模式

    适配器模式

    旧系统和新厂商的接口不匹配, 有的可能修改一下就可以适配的, 有的不能改, 改了也适配不了, 怎么办?

    在旧系统和新厂商之间做一个适配器, 连接2个系统, 这样旧系统不需要修改就可以用上新厂商的接口了.

    这个让我想到了边车模式, 参考https://www.cnblogs.com/rjzheng/p/10390827.html.

    外观模式

    原有接口众多且复杂, 开发人员调用的话, 需要理解很多概念, 且容易出错, 怎么办?

    根据八二原则, 80%的时候只用到了20%的功能, 我们就可以把这常用的20%功能封装起来, 提供更友好的接口, 这样调用方便且不容易出错. 如果真用到了比较偏的功能, 再使用原接口.

    现实场景

    命令模式
    MySQL的bin log, 主库记录二进制日志, 从库复制这些日志, 并重新执行一遍, 达到和主库同步的目的.

    适配器模式
    比如原系统是SOAP接口, 在不修改原接口的情况, 如何能让js进行调用.

    外观模式
    我认为日常用到的帮助类, 就是外观模式的一种体现, 让开发不需要理解过多专业类库的对象知识, 将常用功能包装起来, 就可以直接拿来使用.

  • 相关阅读:
    Document
    JavaScript
    day6 双向循环及pass、break、continue的使用以及for循环
    day5 isinstance&代码块&分支&while循环
    day4:运算符
    day3:强制类型转换&自动类型转换&变量缓存机制
    day2:Number,tuple,str,list,set,dict
    day1:注释和变量
    线段树区间修改+查询区间和
    Prim/Kruskal求最小生成树
  • 原文地址:https://www.cnblogs.com/winwink/p/HeadFirstPattern_P4_Command-Adapter.html
Copyright © 2020-2023  润新知