Директива: 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 можно использовать для всех классов, имеющих возможность прыгать и стрелять.

results matching ""

    No results matching ""