Вы запускаете приложение с нуля.
Следующим шагом является необработанный код с полиморфизмом.
В базовых случаях это может остаться таким - это не проблема.
Если вы хотите, чтобы ваше приложение было более гибким, подготовленным к изменениям, и вы планируете продолжить его разработку - пришло время искать некоторые шаблоны проектирования, стратегия - одна из тех, о которых вам следует подумать, когда полиморфизм дает некоторые неприятности.
Назначение стратегии:
Определите семейство алгоритмов, инкапсулируйте каждый и сделайте их взаимозаменяемыми.
Стратегия позволяет алгоритму варьироваться независимо от клиентов, которые его используют.
Мотивация использования стратегии:
Существует множество алгоритмов разбиения потока текста на строки.
такие алгоритмы в классы, которые требуют их, не желательны для нескольких
Причины:
· Клиенты, которым требуется разрыв строки, становятся более сложными, если они включают
код разрыва строки. Это делает клиентов больше и труднее поддерживать,
особенно если они поддерживают несколько алгоритмов разрыва строки.
· Различные алгоритмы будут подходить в разное время. Мы не хотим
поддерживать несколько алгоритмов разрыва строки, если мы не используем их все.
· Трудно добавлять новые алгоритмы и изменять существующие при разрыве строки
является неотъемлемой частью клиента.
Мы можем избежать этих проблем, определив классы, которые инкапсулируют разные
алгоритмы разрыва строки. Алгоритм, который инкапсулирован таким образом, называется
стратегия.
Последствия:
Семейства связанных алгоритмов. Иерархии классов Стратегии определяют
семейство алгоритмов или поведений для повторного использования контекстов. Наследование может помочь
исключить общие функциональные возможности алгоритмов.
Альтернатива подклассам. Наследование предлагает еще один способ поддержки
различные алгоритмы или поведения. Вы можете создать подкласс класса Context
непосредственно, чтобы дать ему другое поведение. Но это хард-провол
в Context.It смешивает реализацию алгоритма с Context, делая
Контекст сложнее понять, поддерживать и расширять. И ты не можешь варьироваться
алгоритм динамически. Вы сталкиваетесь со многими родственными классами, чьи только
Разница заключается в алгоритме или поведении, которое они используют. Инкапсуляция
Алгоритм в отдельных классах Стратегии позволяет варьировать алгоритм
независимо от контекста, облегчая переключение, понимание и
продлить.
Стратегии исключают условные утверждения. Шаблон стратегии предлагает
альтернатива условным утверждениям для выбора желаемого поведения.
Когда разные виды поведения объединены в одном классе, трудно избежать использования
условные высказывания для выбора правильного поведения. Инкапсуляция
поведение в отдельных классах стратегий устраняет эти условные
заявления.