Posts Tagged ‘命令’

有人好奇JAse中的undo和redo是怎么做的,并且给出自己的设计做法也各有特色。我最初采用的是全文保存方法(这一方法也是最简单有效、使用最广泛的),后来被人痛批一顿换成了命令链。命令链其实是基于一种叫做“命令”的设计模式的,关键思想在于面向接口编程。这个东西随便搜搜有很多例子,我再重复制造一下轮子吧。
AS3中的命令链
as3对OOP的支持已经比较完善,所以可以据此写出很好的命令链,先从简单的例子来说起(以下代码均被简化)。假如我们要做一个Dog类,Dog的“说话”方式是bark(狗叫):
class Dog {
public function bark():void {
trace(“汪汪!”);
}
}
这很简单,没有什么特殊之处。可是奇怪的事情发生了,中学英语课本中有个闻名的澳洲野狗Dingo,它的叫声和普通的狗不一样:
class Dingo extends Dog {
public override function bark():void {
trace(“呜呜——”);
}
}
也很简单,Dingo毕竟还是一只狗,只需继承并覆盖即可。好了现在需求来了:我们想听听这些动物的叫声是什么样的,只需要调用下相应的方法即可。
public class Test {
public function Test():void {
var…