Шаблоны программирования на Swift: Strategy

 

strategy-design-temlate_proSwift_ru

В этой статье мы рассмотрим шаблон программирования Стратегия (Strategy) на Swift в среде разработки XCode

Strategy

Если Ваша девушка злая, вы скорее всего будете общаться с ней осторожно. Если на вашем проетке завал, то вероятнее всего вы не будете предлагать в команде вечерком дернуть пива или поиграть в компьютерные игры. В различных ситуациях, у нас могут быть очень разные стратегии поведения. К примеру, в приложении вы можете использовать различные алгоритмы сжатия, в зависимости от того с каким форматом картинки вы работаете, или же куда вы хотите после этого картинку деть. Вот мы и добрались до паттерна Стратегия.
Также отличным примером может быть MVC паттерн – в разных случаях мы можем использовать разные контроллеры для одного и того же View (к примеру авторизированный и не авторизированный пользователь).
Паттерн Стратегия определяет семейство алгоритмов, которые могут взаимозаменяться.
Когда использовать паттерн:

  1. Вам необходимы различные алгоритмы
  2. Вы очень не хотите использовать кучу вложенных If-ов
  3. В различных случаях ваш класс работает по разному

Давайте напишем пример – RPG игра, в которой у вас есть различные стратегии нападения Вашими персонажами:) Каждый раз когда вы делаете ход, ваши персонажи делают определенное действие. Итак, для начала управление персонажами!
Создадим базовую стратегию:

Как видно из кода стратегии – у нас есть 3 персонажа, каждый из которых может совершать одно действие! Давайте научим персонажей нападать!

При использовании такой стратегии наши персонажи нападают на все что движется! Давайте научим их защищаться:

Во время защитной стратегии, наши персонажи действуют по-другому – кто атакует, кто лечит, а некоторый даже защищают:) Ну, теперь как-то надо это все использовать. Давайте создадим нашего игрока:

Наш игрок может только менять стратегию и действовать в зависимости от этой стратегии. Код для тестирования:

Вывод лога в консоль:

Пример с GitHub

Шаблон «Стратегия» используется для создания сменного семейства алгоритмов, из которых нужный процесс выбирается во время выполнения.

Для принтера, который умеет печатать строки, мы создаем две стратегии: печать строчными и заглавными буквами. Подменяя стратегии у экземпляра принтера, мы меняем строку вывода.


Опубликовано в Фундаментальные основы, Шаблоны программирования iOS Swift Метки:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*