设计模式之模板模式&命令模式

设计模式之模板模式&命令模式总地址
https://github.com/rocky123shine/template

模板模式

定义

顾名思义,他是一类或者相似操作的统一处理的方式。
特点:他定义了操作中的算法框架,具体的方法延时到子类,在子类中可以不改变算法结构重新定义一些特定的步骤

应用场景
  1. 多个子类有公共的方法,逻辑基本相同,例如Activity的生命中周期
  2. 重复复杂的算法,这时候我们就可以将核心的方法设计成模板,具体的有子类去实现
角色

模板方法就两个角色 抽象模板类和具体模板类
抽象模板类:定义子类算法的框架,只提供通用的方法
具体模板类:不改变算法结构,可以重新定义特定方法的步骤

设计分析

案例:本 demo是模拟电脑开机实际情形
1. 设计抽象模板提供特定的抽象方法
2. 设计具体的模板类,继承抽象模板 重写父类方法

命令模式

定义

在软件系统中,”行为请求者”与”行为实现者”通常呈现一种”紧耦合”。但在某些场合,比如要对行为进行”记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将”行为请求者”与”行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合

应用场景
  1. 应用程序支持撤销和恢复
  2. 记录请求日志,当系统故障这些命令可以重新被执行
  3. 想用对象参数化一个动作以执行操作,并且用不同命令对象来替换回调函数
角色
  • 接收者(作用:负责具体的功能实现,执行具体的逻辑)
  • 命令接口(抽象)
  • 具体命令
    · 需要持有接收者对象引用
    · 实现命令接口
  • 请求者角色->Invoker
设计分析

案例:我们模拟俄罗斯方块游戏
- 设计接收者 TetrisMachine 提供移动的方法
- 设计命令接口 ICommand 提供通用执行方法
- 设计具体命令 向左:LeftCommand,向右:RightCommand。。。
- 设计请求角色 Button

你可能感兴趣的:(架构师之旅,架构师之旅)