Директива: IHCore.Patterns
Определение
Базовая реализация шаблона "Команда". Может использоваться для схожих объектов, но с разной реализацией. Смотрите также:
Пример использования шаблона "Команда".
Примечание: В примере ниже есть входной параметр Actor actor
. В шаблоне же его нет т.к. В данном примере, класс Actor - абстракция. Можно представить, что это персонаж, с имеющимися методами Jump()
и Shoot()
.
Соответственно, если вы хотите передавать ваших героев, как в примере, вам необходимо добавить новый входной параметр переопределяемого метода Action()
в паттерне "Команда". Пример этого:
public class Command
{
public Command () {}
public virtual void Action(Actor actor) { } //Как видите, добавлен входной параметр
}
Основной Пример:
public class ShootAction : Command
{
public ovveride void Action(Actor actor) => actor.Shoot();
}
public class JumpAction : Command
{
public ovveride void Action(Actor actor) => actor.Jump();
}
public class Main()
{
private Actor actor;
private ShootAction shootAction = new ShootAction();
private JumpAction jumpAction = new JumpAction();
private void Update()
{
if(Input.GetKeyDown(KeyCode.Space)) jumpAction(actor);
else if(Input.GetKeyDown(KeyCode.Mouse0)) shootAction(actor);
}
}
Как вы можете заметить, ShootAction shootAction
и JumpAction jumpAction
можно использовать для всех классов, имеющих возможность прыгать и стрелять.