テンプレートメソッドパターン
大本の汎用的なアルゴリズムを記述したテンプレートクラス
抽象インターフェース
package factory
{
public interface IField
{
// 「フィールドを描く」というメソッドを定義
function drawField():void;
}
}
実装クラス
package factory
{
public class FootballField implements IField
{
public function FootballField()
{
}
public function drawField():void
{
trace('Drawing the Football Fieald!');
}
}
}
抽象テンプレートクラス
package factory
{
/**
* テンプレートメソッド抽象クラス
*
*/
public class BaseGame
{
public function BaseGame()
{
}
public function initialize():void
{
// 無処理
}
public function createField():IField
{
throw new Error('createField:Abstract Methd!');
}
}
}
継承クラス
package factory
{
/**
* テンプレートメソッドを継承するクラス
*
*/
public class FootballGame extends BaseGame
{
public function FootballGame()
{
super();
}
override public function initialize():void
{
var field:IField = createField();
field.drawField();
}
override public function createField():IField
{
return new FootballField();
}
}
}
コードだけでは理解するのが難しいので、クラス図を書いたほうがいい。
「テンプレートとなる抽象クラスで処理のアルゴリズムを書き、
抽象インターフェースで各処理の詳細を記述していく」
というイメージかな。