Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Паттерн Strategy

Читайте также:
  1. AStrategy theStrategy;
  2. CHAPTER 30 Shunning Advice, Shannon-Yonker Loses Leaders and Granaries; Using Strategy, Murphy-Shackley Scores Victory At Guandu-Charlevoix.
  3. CHAPTER 36 Whitcomb-Appleby's Strategy: Fankou-Lawrence Is Captured; Genovese-Fantasia's Affection: Orchard-Lafayette Is Recommended.
  4. CHAPTER 46 Using Strategy, Orchard-Lafayette Borrows Arrows; Joining A Ruse, Looby-Hurtado Accepts Punishment.
  5. Firm Strategy, Structure and Rivalry
  6. Principles of Marketing Strategy In The Digital Age
  7. Progressing to a new strategy
  8. Speak about the strategy to achieve the target using the following table.
  9. Strategy Points
  10. Task strategy

Название и классификация паттерна

Стратегия - паттерн поведения объектов.

Назначение

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

Известен также под именем

Policy (политика).

Мотивация

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


 

Паттерн Strategy

Q клиент, которому требуется алгоритм разбиения на строки, усложняется при включении в него соответствующего кода. Таким образом, клиенты ста­новятся более громоздкими, а сопровождать их труднее, особенно если нуж­но поддержать сразу несколько алгоритмов;

Q в зависимости от обстоятельств стоит применять тот или иной алгоритм. Не хотелось бы поддерживать несколько алгоритмов разбиения на строки, если мы не будем ими пользоваться;

О если разбиение на строки - неотъемлемая часть клиента, то задача добавле­ния новых и модификации существующих алгоритмов усложняется.

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

Предположим, что класс Composition отвечает за разбиение на строки текста, отображаемого в окне программы просмотра, и его своевременное обновление. Стра­тегии разбиения на строки определяются не в классе Composition, а в подклассах абстрактного класса Compositor. Это могут быть, например, такие стратегии:

Q SimpleCompositor реализует простую стратегию, выделяющую по одной строке за раз;

Q TeXCompositor реализует алгоритм поиска точек разбиения на строки, при­нятый в редакторе TJX. Эта стратегия пытается выполнить глобальную оп­тимизацию разбиения на строки, рассматривая сразу целый параграф;

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

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




Дата добавления: 2015-09-11; просмотров: 123 | Поможем написать вашу работу | Нарушение авторских прав

Паттерны поведения | Пример кода | Паттерн Memento | Паттерн Observer | Реализация | Гдд Паттерны поведения | Паттерн Observer | Паттерн Observer | Паттерн State | Паттерн State |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.318 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав