在模板方法模式中,抽象类扮演了及其重要的角色。虽然ActionScript 3并不支持abstract关键字,但仍然可以使用抽象类及抽象方法的相关概念。
模板方法是在设置算法的抽象类中定义,其定义了程序执行时的算法步骤,这些步骤方法全部或部分由抽象方法组成,由子类覆盖这些方法来完成具体实现。
以初始化一个游戏为例,我们定义一个游戏的抽象类AbstrackGame,并定义模板方法initialize():
package
{
public class AbstractGame
{
public function AbstractGame()
{
throw new Error("Abstract Class!");
}
//模板方法,该方法定义了初始化一个游戏的算法流程
final public function initialize():void
{
createField();
createTeam("red");
createTeam("blue");
starteGame();
}
public function createField():void
{
throw new Error("Abstract Method!");
}
public function createTeam(name:String):void
{
throw new Error("Abstract Method!");
}
public function starteGame():void
{
throw new Error("Abstract Method!");
}
}
}
initialize()方法定义了创建一个游戏的所有流程,包括创建场地,创建队伍,开始游戏。
之后通过具体游戏类来实现其中的模板方法中的抽象方法:
package
{
public class FootballGame extends AbstractGame
{
public function FootballGame()
{
}
override public function createField():void
{
trace("Create Football Field");
}
override public function createTeam(name:String):void
{
trace("Create Football Team Named " + name);
}
override public function starteGame():void
{
trace("Start Football Game!");
}
}
}