Обзор темы [Шаблоны проектирования]

Затем: МотивацияНазначение

Определяет семейство алгоритмов, инкапсулирует каждый из них, и делает их взаимозаменяемыми. Эта стратегия позволяет алгоритму изменятся независимо от клиентов, использующих его.

Затем: СтруктураМотивация

Существует много алгоритмов для разделения потока текста на строки. Жесткое помещение всех таких алгоритмов в классы, которым они необходимы нежелательно по нескольким причинам:

Мы можем избежать этих проблем, определяя классы, инкапсулирующие различные алгоритмы разбиения на строки. Алгоритм, инкапсулированный таким образом, называется стратегией.

Предположим, что класс Composition ответствен за поддержание и обновление разбиения текста на строки, отображаемого в текстовом средстве просмотра. Стратегии разделения на строки не реализованы в классе Composition. Они реализованы отдельно подклассами абстракного класса Compositor. Compositor подклассифицирует реализации различных cтратегий:

Composition поддерживает ссылку на объект Compositor. Всякий раз, когда Composition переформатирует текст, он переает эту ответственность объекту Compositor. Клиент Composition определяет, какой Compositor должен использоваться, устанавливая Compositora в Composition.

 

Затем: Составные частиСтруктура

Составные части