Паттерны на ruby: Стратегия
Описание:
Данный паттерн применяется в случае если входные данные/представление/вывод данных — одни и те же; логика обработки данных перед отдачей в представление — разное.
Краткий смысл паттерна — поместить алгоритмы/логику в отдельные объекты.
Пример задачи:
Нужно реализовать функционал шифрования текстового сообщения разными алгоритмами.
Реализация:
Создадим класс для текстового сообщения <TextMessage> который при инициализации принимает текстовое сообщение.
Сделаем этому классу атрибут .encryptor, с возможностью менять его значение налету.
Плюс добавим метод .encrypt_me для шифрования, который будет возвращать строку. Этот метод будет проверяет есть ли у значения атрибута .encryptor возможности вызова метода .encrypt, и если есть то вызывает его и передает наше сообщение.
В качестве алгоритмов шифрования создадим классы <SimpleEncryptor>, <Base64Encryptor> и <AESEncryptor> у каждого из которых будет метод .encrypt.