dreamwalker 发表于 2007-6-25 20:07

设计模式学习笔记 (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]
查看完整版本: 设计模式学习笔记 (ActionScript 3.0学习)