最後に、命令を管理するクラスを作成します。
<= クリックすると開きます。
using System.Collections.Generic;
public class CommandManager
{
private List<ICommand> commands = new List<ICommand>();
public void AddCommand(ICommand command)
{
commands.Add(command);
}
public void ExecuteCommands()
{
foreach (var command in commands)
{
command.Execute();
}
}
}
AddCommnad メソッドを利用し、ICommnad インターフェースを実装しているオブジェクトを commands リストに登録しています。
ポイントとしては、ICommnad インターフェースのリストであるため、
クラスに関わらず、ICommnad インターフェースを実装していればリストに登録できる点です。
そのため、MoveCommnad クラス、JumpCommnad クラスのどちらであっても commands リストに登録できます。
ExecuteCommands メソッドでは ICommnad のリストである commands リストを foreach 文を利用してループ処理し、
リスト内に格納されている ICommnad インターフェースを実装しているクラスの各 Execute メソッドを実行します。
Execute メソッドは MoveCommand クラスと JumpCommnad クラスではメソッド内の処理が異なるため、同じメソッドを実行していますが、処理の振る舞いが変わります。