设计模式学习笔记 (ActionScript 3.0学习)
基础:一,“多态”在ActionScript中的实现
对应于C++中的虚基类
ActionScript里是 interface
dreamwalker/ITank.as
package dreamwalker{
public interface ITank{
function fire():void;
function move(step:Number,direction:Number):Boolean;
//.....其它 Tank类的共有操作
}
}
dreamwalker/ArmorTank.as
package dreamwalker{
class ArmorTank implements ITank{
public function fire():void{
trace("ArmorTank:: fire()called....");
}
function move(step:Number,direction:Number):Boolean{
trace("ArmorTank :: move() called....");
}
//.....其它 Tank类的共有操作
}
}
dreamwalker/GeneralTank.as
package dreamwalk{
class GeneralTank{
public function fire():void{
trace("GeneralTank:: fire()called....");
}
function move(step:Number,direction:Number):Boolean{
trace("GeneralTank :: move() called....");
}
//.....其它 Tank类的共有操作
}
}
dreamwalker/TankFactory.as
package dreamwalker{
public class TankFactory(){
public static function getTank(tankType:String):ITank{
switch(tankType){
case "armor":
return new ArmorTank();
case "general":
return new GeneralTank();
//..........其它类型
}//switch
}//getTank
}
}
=======================================
以上为类文件,下面是测试文件,开发工具 Flash CS3.0
注意红色部分……
这就是AS的多态
=======================================
TestTank.as
package{
import flash.display.Sprite;
import dreamwalker.*;
public class TestTank{
public function TestTank(){
var tank:ITank=TankFactory.getTank("armor");
tank.fire();//显示ArmorTank:: fire()called....
tank=TankFactory.getTank("general");
tank.fire();//显示GeneralTank:: fire()called....
}
}
}
新建一个 Fla文件(actionscript 3.0)
TestTank.fla
在属性处填写 document class 为 TestTank
=====================================
DONE
=====================================
以上共六个文件:
目录结构为:
/dreamwalker/ITank.as
/dreamwalker/GeneralTank.as
/dreamwalker/ArmorTank.as
/dreamwalker/TankFactory.as
/TestTank.as
/TestTank.fla
先写着这么多……(也只学到了这么多 有空学了再上来写……)
不知有没有理解错误的地方……
PS:上面就是工厂模式一个例子
有兴趣知道什么是工厂模式的
可以google一下……
[ 本帖最后由 dreamwalker 于 2007-6-25 20:33 编辑 ]
页:
[1]