设计模式分类
- 创建型模式->5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
- 结构型模式->7种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式
- 行为型模式->11种:策略模式、模版方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
这一片文章将讲述命令模式,其他模式会在后续的文章中更新
定义
命令模式(Command Pattern)
- 第一点:将一个请求封装成一个对象,从未让用户使用不同的请求将客户端参数化
- 第二点:对请求排队或者记录请求日志,以及支持撤销操作
应用场景
当需要将方法调用包装成一个对象,以延时方法调用,或者让其他组件在对其内部实现细节不了解的情况下调用的时候可以使用命令模式
- 场景一:应用程序支持撤销和恢复
- 场景二:记录请求日志,当系统故障这些命令可以重新被执行
- 场景三:想用对象参数化一个动作以执行操作,并且用不同命令对象来替换回调函数
设计模式分析方法
- 第一步:基本概念(了解)
- 第二步:确定框架模式
- 第三步:分析角色(每一种设计模式里面都会有角色划分),不同场景下角色不同,一个类担当角色达到3个之多,例如:一个User类(具体产品类、抽象产品类),在架构设计存在多种角色划分
- 第四步:分析单个角色类结构(开源项目)
- 第五步:分析单个角色意义(子类意义所在)
- 第六步:分析模块
- 第七步:性能优化问题
命令模式角色划分
- 角色一:接收者->Receiver
- 角色二:命令接口->CommandProtocol(协议)
- 角色三:具体命令->ConcrateCommand
- 角色四:请求者->Invoker
具体案例
俄罗斯方块
每一个操作都是一个命令,左命令、右命令、变形命令
角色划分:
- 角色一:命令接口(抽象命令)->
TMCommandProtocol
- 角色二:具体命令 3个
1、左命令->TMLeftCommand
2、右命令->TMRightCommand
3、变形命令->TMTransformCommand
- 角色三:接收者->
TetrisMachine
- 角色四:请求者-> 命令管理器
TetrisMachineManager
Demo地址
密码:mch1