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

facade_proSwift

Тема сегодняшней статьи из цикла шаблоны программирования на Swift — шаблон Facade

Facade

Многие сложные системы состоят из огромной кучи компонент. Так же и в жизни, очень часто для совершения одного основного действия, мы должны выполнить много маленьких.

К примеру, чтобы пойти в кино нам надо:

  1. Посмотреть расписание фильмов, выбрать фильм, посмотреть когда есть сеансы, посмотреть когда у нас есть время.

  2. Необходимо купить билет, для этого ввести номер карточки, секретный код, дождаться снятия денег, распечатать билет.
  3. Приехать в кинотеатр, припарковать машину, купить попкорн, найти места, смотреть.

И все это для того, чтобы просто посмотреть фильм, который нам, очень вероятно, не понравится.

Или же возьмем пример Amazon – покупка с одного клика – как много систем задействовано в операции покупки? И проверка Вашей карточки, и проверка Вашего адреса, проверка товара на складе, проверка или возможна доставка даного товара в даную точку мира… В результате очень много действий которые происходят всего по одному клику.

Для таких вот процесов был изобретен паттерн – Фасад ( Facade ) который предоставляет унифицированный интерфейса к большому количеству интерфейсов системы, в следствии чего систему стает гораздо проще в использовании.

Давайте, попробуем создать систему которая нас переносит в другую точку мира с одного нажатия кнопки! Сначала нам нужна система, которая проложит путь от нашего места перебывания в место назначения:

Так же нам необходима сама система заказа транспорта и собственно путешествия:

Ну и какие же путешествия без билетика:

А теперь, давайте создадим единый доступ ко всем этим системам:

Фасад знает все про все системы, потому в одном методе он берет и транспортирует нас куда следует. Код теста элементарен:

Консоль отобразит весь процесс путешествия, которое мы вызвали одним методом нашего фасада.

Пример с GitHub

Еще раз:

Шаблон фасад используется для определения простого интерфейса к более сложной подсистеме.

Шаблоном программирования Фасад определены два метода для записи объектов по ключу в  NSUserDefaults и их получении. Громоздкий код заменяется одной строкой.

Метки:
2 комментария на “Шаблоны программирования на Swift: Facade
  1. Андрей:

    Скажите пожалуйста, почему вы используете enum для Eternal а не допустим class или struct?

    • admin:

      Я думаю, что в данном конкретном случае программист использовал enum потому что мог. Дело в том, что в очень не большом количестве языков программирования есть возможность добавлять полноценные методы к перечислениям.
      А если обратится к теории, то картина следующая:
      Enum: перечисления представляют собой конечное число «состояний бытия» (случаев). Перечисления инициализируются случаем (кейсом перечисления) и эти случаи всегда должны быть действительными экземплярами.
      Structs следует использовать, когда не существует конечного числа действительных экземпляров, которые также не образуют полного определения объекта
      Классы полностью определяют первичный параметры объекта в вашей модели, ее атрибуты и методы внутреннего и внешнего взаимодействия.

Добавить комментарий для admin Отменить ответ

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

*