`

Command 命令 行为模式

阅读更多

   Command 命令 行为模式,将一个请求封装为一个对象,从而你可以用不同的请求对客户端进行参数化、对请求排队或记录请求日志,以及支持Redo,Undo操作。

 

   PureMVC的Controller 就是用Command模式实现的,Command模式有一下5个元素

   1、命令接口

   2、具体命令

   3、接受者

   4、客户

   5、调用者

 

 



 命令接口是命令模式的重要组成部分,它允许鞠勇不同实现的所有命令都使用统一的接口,也就是,命令的调用者不知道命令的具体实现,就像我们开灯或关灯,但是我们并不知道灯的打开和关闭具体是如何实现的 。

 

以下的例子摘自《Actionscrption 3 设计模式》

 

 最简单的命令接口通常是一个excute()方法,用于运行被请求的操作,代码如下:

 

 

ICommand.as

package {
	public interface ICommand {
		function excute():void;
	}
}
 

   这时我们需要定义支持撤销的命令和重做的命令,代码如下:

 

 

IUndoableCommand .as

package {
	public interface IUndoableCommand extends ICommand {
		function undo();
	}
}

 

 

IRedoableCommand .as

package {
	public interface IRedoableCommand extends ICommand {
		function redo();
	}
}

 

    通常具体的命令需要一个接受者,就是要对他操作的对象,PureMVC的Command要传进一个Notification,通过facade.reciveMediator()来取得一个操作对象。这里我们就在具体构造函数里,传进一个参数来作为操作对象。

 

RotateColckwiseCommand.as

package {
	import flash.display.*;
	public class RotateColckwiseCommand implements ICommand {
		private var receiver:DisplayObject;
		public function RotateColckwiseCommand(receiver:DisplayObject) {
			this.receiver = receiver;
		}
		
		public function execute():void {
			receiver.rotation += 20;
		}
	}
}
 

   当然也可反向旋转的命令

 

 

 

RotateCounterColckwiseCommand.as

package {
	import flash.display.*;
	public class RotateCounterColckwiseCommand  implements ICommand {
		private var receiver:DisplayObject;
		public function RotateCounterColckwiseCommand (receiver:DisplayObject) {
			this.receiver = receiver;
		}
		
		public function execute():void {
			receiver.rotation -= 20;
		}
	}
}

 

   现在来创建一个放大对象的命令

 

 

ScaleUpCommand.as

package {
	import flash.display.*;
	public class ScaleUpCommand  implements ICommand {
		private var receiver:DisplayObject;
		public function ScaleUpCommand (receiver:DisplayObject) {
			this.receiver = receiver;
		}
		
		public function execute():void {
			receiver.scaleX += 0.1;
			receiver.scaleY += 0.1;
		}
	}
}

    还有个缩小对象的命令:

 

 

ScaleDownCommand .as

package {
	import flash.display.*;
	public class ScaleDownCommand  implements ICommand {
		private var receiver:DisplayObject;
		public function ScaleDownCommand (receiver:DisplayObject) {
			this.receiver = receiver;
		}
		
		public function execute():void {
			receiver.scaleX -= 0.1;
			receiver.scaleY -= 0.1;
		}
	}
}
 

 

 ............................................

 

 

 

  • 大小: 44.8 KB
分享到:
评论

相关推荐

    (行为型模式) Command 命令模式

    C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式

    C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式 (Level 300)

    C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式 (Level 300)

    Command命令模式介绍.docx

    Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”的问题

    C#面向对象设计模式纵横谈\15 行为型模式Command命令模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第15节:行为型模式Command命令模式

    JAVA设计模式之行为模式

    这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...

    命令模式 Command Pattern

    命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

    PHP命令Command模式用法实例分析

    命令Command模式是GOF23种模式中的一种,是一种行为模式。这种模式很难理解。《设计模式》一书中对它语焉不详。而网上的一些文章对其的解释也是错误的。实际上,命令模式并不是那么神秘。 命令模式的理解,关键有2点...

    c++设计模式-行为型模式-命令模式

    c++设计模式-行为型模式-命令模式;qt工程 ;c++简单源码; 命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将...

    详解设计模式中的Command命令模式及相关C++实现

    Command模式关键就是讲一个请求封装到一个类中(Command),再提供处理对象(Receiver),最后Command命令由Invoker激活。另外,我们可以将请求接收者的处理抽象出来作为参数传给Command对象,实际也就是回调的机制来...

    [行为模式] head first 设计模式之命令模式(Command)

    NULL 博文链接:https://jacky-dai.iteye.com/blog/1928129

    设计模式系列之命令模式

    在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的...这就是命令模式(Command Pattern)。

    .NET设计模式(17):命令模式(CommandPattern)

    在软件系统中,“行为请求者”与“行为实现者”通常呈现一种...[GOF《设计模式》]Command模式结构图如下:图1Command模式结构图Command模式将一个请求封装为一个对象,从而使你可以使用不同的请求对客户进行参数化。

    设计模式_命令模式.zip

    命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 ...

    wuyading#study#命令模式2

    介绍命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命

    设计模式之11个行为型模式

    行为型简介职责链模式(ChainofResponsibility)命令模式(Command)解释器模式(Interpreter)迭代器模式(Iterator)中介者模式(Mediator)备忘录模式(Memento)观察者模式(Observer)状态模式(State)策略模式(Strategy)模板...

    C#面向对象设计模式纵横谈(视频与源码)

    C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式 C#面向对象设计模式纵横谈(16):(行为型模式) Interpreter 解释器模式 C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式 C#...

    23种java设计模式

    3、行为模式:Iterator(迭代模式)、Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、 Mediator(中介模式)、Interpreter(解释器模式)、Strategy(策略模式)、State 、Observer...

    23种设计模式 (创建型,结构型,行为型)

    命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式...

Global site tag (gtag.js) - Google Analytics