时间:2016-12-5来源:本站原创作者:佚名

1基础知识

1.1标准定义

命令(Command)模式标准定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。

1.2分析和说明

命令(Command)模式属于对象行为型模式。命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。系统支持命令的撤消。

命令(Command)模式结构如图1所示,其角色包括客户(Client)角色、命令(Command)角色、具体命令(ConcreteCommand)角色和接收者(Receiver)角色。

图1命令模式结构

?客户(Client)角色:创建了一个具体命令(ConcreteCommand)对象并确定其接收者。

?命令(Command)角色:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色,通常由一个Java接口或Java抽象类实现。

?具体命令(ConcreteCommand)角色:定义一个接收者和行为之间的弱耦合;实现execute()方法,负责调用接收者的相应操作。execute()方法通常叫做执行方法。

?接收者(Receiver)角色:负责具体实施和执行一个请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法。

2应用场景举例

比如公司的一位管理者要对下属安排工作,就可以通过命令模式。管理者是客户角色:命令角色是一个抽象类:安排工作就是具体命令角色,具体包括要求编写工作计划、上报工作报告等。下属就是接收者角色。比如说老李这个管理者安排小王编写工作计划和上报工作报告。用例见图2。

图2命令模式用例图

在这里可以把Manager类理解为客户(Client)角色。Command抽象类是命令(Command)角色。Computer是一种抽象产品(Product)角色。PlanCommand类和ReportCommand类是具体命令(ConcreteCommand)角色。Subordinate类是接收者(Receiver)角色。其实现类图如图3所示。Manager类聚合Command抽象类,Command抽象类聚合Subordinate类,PlanCommand类和ReportCommand类继承Command抽象类。

图3命令模式类图

命令模式实现顺序图见图4,实现顺序描述:①基于Subordinate类创建一个subordinate对象。②基于Manager类创建一个manager对象。③基于ReportCommand类创建一个







































北京哪家医院治疗白癜风得好
北京哪个医院医白癜风

转载请注明原文网址:http://www.helimiaopu.com/bbqb/2531.html

------分隔线----------------------------