Android设计模式

Android设计模式——命令模式(十一大行为型)

2019-12-13  本文已影响0人  何小送

1.命令模式介绍

        命令模式(Order Pattern),是十一大行为型设计模式之一。

        命令模式相对于其他的设计模式来说,没有太多的条条框框,相对于其他设计模式来说更为灵活多变。我们平时接触较多的命令模式入程序菜单命令,点击“关机”命令,系统会执行一系列的操作,用户不用其中的过程。命令模式就是将一系列的方法调用封装,用户只需要调用一个方法执行,那么所有这些被封装的方法就会被挨个执行调用。

2.命令模式的定义

        将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。

3.命令模式的使用场景

        需要抽象出待执行的动作,然后以参数的形式提供出来——类似于过程设计中的回调机制,而命令模式正是回调机制的一个面向对象的替代品。

        在不同的时刻指定,排列和执行请求。一个命令对象可以有与初始请求无关的生存期。

        需要支持取消操作。

        支持修改日志功能,这样当系统崩溃时,这些修改可以被重做一遍。

        需要支持事务操作。

4.UML类图

UML类图

5.角色介绍

1.Receive:接收者角色。

        该类负责具体实施或执行一个请求,就是执行具体逻辑的角色。任何一个类都可以成为一个接收者,而在接收者类中封装具体的操作逻辑方法我们则称之为行动方法。

2.Command:命令角色。

        定义所有具体命令类的抽象接口。

3.ConcreteCommand:具体命令角色。

        该类实现了Command接口,在execute方法中调用接收者角色的相关方法,在接收者和命令执行的具体行为之间加以弱耦合。

4.Invoker:请求者角色。

        该类持有具体命令者对象的引用。该类的职责就是调用命令对象执行具体的请求,相关的方法我们称为行动方法。

5.client:客户端。

6.模板

接收者类 抽象命令接口 具体命令类 请求者类 客户类

7.例子

接收者角色(上图) 命令者抽象(上图) 具体命令者(上图) 具体命令者(上图) 具体命令者(上图) 具体命令者(上图) 请求者类(上图)

例子分析

        TetriMachine类为接收者类,是整个命令模式中唯一处理具体代码逻辑的地方,其他的类直接或间接的调用到该方法,这就是接收者角色,处理具体的逻辑。接收者类只是一个普通的类,任何类都可以作为接收者。

        具体命令者里持有一个接收者对象的引用,在命令执行方法里调用接收者的方法。

        请求者类里持有对具体命令者对象的引用,把一个具体命令者封装成一个对象,调用命令对象执行具体的请求。

8.Android源码命令模式

        Android事件输入系统。

9.总结

        命令模式优点:更弱的耦合性,更灵活的控制性以及更好的扩展性。缺点则是类的膨胀。

PS:读《Android源码设计模式解析与实战》中的命令模式之后的一些笔记与感悟。

上一篇下一篇

猜你喜欢

热点阅读