テンプレートメソッドパターン
大本の汎用的なアルゴリズムを記述したテンプレートクラス抽象インターフェース
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(); } } }
コードだけでは理解するのが難しいので、クラス図を書いたほうがいい。
「テンプレートとなる抽象クラスで処理のアルゴリズムを書き、
抽象インターフェースで各処理の詳細を記述していく」
というイメージかな。
0 件のコメント:
コメントを投稿