1105/090
AAS3WDP-Chapter 5 Template Method模板方法
拿到了AS3设计模式(AAS3WDP)的中文版,亚马逊的送书速度比当当好很多~
看得挺慢,不过也看到了第5章,模板方法和工厂模式,同时讲到了抽象类,乖乖的敲了下代码,顺便做下笔记吧。
AS3中没有抽象类,但是可以通过别的办法实现同抽象类一样的效果,下次看到这个东西再讲,呵呵。
现在开始今天的内容"模板方法",我们先建立一个AbstractGame类,代码如下:
package {
public class AbstractGame {
public function initialize():void {
createField();
createTeam("red");
createTeam("blue");
startGame();
}
public function createField():void {
throw new Error("Abstract Method!");
}
public function createTeam(name:String):void {
throw new Error("Abstract Method!");
}
public function startGame():void {
throw new Error("Abstract Method!");
}
}
}
其中的initialize()就是模板方法,它调用createField();createTeam();startGame();3个方法,但是这个类本身不提供这3个方法的实现,而通过子类来实现。
子类FootballGame覆盖上述3个方法:
package{
public class FootballGame extends AbstractGame{
public override function createField():void{
trace("Create Football Field!");
}
public override function createTeam(name:String):void{
trace("Create Football Team Named:" + name);
}
public override function startGame():void{
trace("Start Football Field!");
}
}
}
具体引用则是这样,先实例化,然后就调用模板方法。
import FootballGame; var FGame:FootballGame=new FootballGame(); FGame.initialize();
顺便唠叨一句,杭州的天气热的也实在太快了点吧?