«Классический» паттерн «Стратегия»
«Классический» паттерн «Стратегия»
Если вас больше интересуют паттерны проектирования, чем собственно язык C++, то более традиционный подход к реализации паттерна «Стратегия» состоит в том, чтобы сделать функцию вычисления жизненной силы виртуальной функцией-членом в классах, принадлежащих отдельной иерархии. Эта иерархия может выглядеть примерно так:
Если вы не знакомы с нотацией UML, поясню: здесь говорится, что GameCharacter – корень иерархии, в которой EvilBadGay и EyeCandyCharacter являются производными классами; HealthCalcFunc – корень иерархии, в которой производными классами являются SlowHealthLooser и FastHealthLooser; и каждый объект типа GameCharacter содержит указатель на объект из иерархии HealthCalcFunc. А вот как структурируется соответствующий код:
class GameCharacter; // опережающее объявление
class HealthCalcFunc {
public:
...
virtual int calc(const GameCharacter& gc) const
{...}
...
};
HealthCalcFunc defaultHealthCalc;
class GameCharacter {
public:
explicit GameCharacter(HealhCalcFunc *phfc = &defaultHealthCalc)
:pHealtCalc(pfhc)
{}
int healthValue() const
{ return pHealthCalc->calc(*this);}
...
private:
HealhCalcFunc * pHealtCalc;
};
Этот подход привлекателен тем, что программисты, знакомые со «стандартной» реализацией паттерна «Стратегия», сразу видят, что к чему. К тому же он предоставляет возможность модифицировать существующий алгоритм вычисления жизненной силы путем добавления производных классов в иерархию HealthCalcFunc.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Стратегия планирования
Стратегия планирования Стратегия (policy) планирования— это характеристики поведения планировщика, которые определяют, что и когда должно выполняться. Стратегия планирования определяет глобальный характер поведения системы и отвечает за оптимальное использование
Стратегия продвижения
Стратегия продвижения План выведения интернет-магазина в топ включает в себя перечисленные ниже пункты:• подбор запросов, составление семантического ядра;• размещение ключевых запросов на релевантных страницах, создание недостающих страниц под другие запросы;•
24.3 Стратегия безопасности
24.3 Стратегия безопасности Интеграция безопасности в IP стала одной из наиболее сложных работ, выполненных IETF. Аутентификация, целостность данных и конфиденциальность стали насущными и необходимыми. Стратегия безопасности предполагает:? Содействие совместной работе,
Приложение: "Специалист в пределах слышимости"(Expert In Earshot) Паттерн управления проектом
Приложение: "Специалист в пределах слышимости"(Expert In Earshot) Паттерн управления проектом (полную версию смотрите на http://c2.com/cgi/wiki?ExpertInEarshot)Неопытным программистам довольно сложно самостоятельно научиться хорошо работать, поэтому…Около них (в пределах слышимости) должен
Совсем как классический?
Совсем как классический? Прежде чем мы продолжим, однако, я думаю что должен разъяснить связи между модулями и функциональные возможности этих модулей. Те из вас, кто знаком с теорией компиляции как обучавшиеся в университетах, конечно распознают имена Scanner, Parser и CodeGen, все
5.4.1. Классический метапротокол прикладного уровня в Internet
5.4.1. Классический метапротокол прикладного уровня в Internet RFC 3117 Маршала Роуза (Marshall Rose), "On the Design of Application Protocols"[54] представляет исключительный обзор вопросов проектирования протоколов прикладного уровня в Internet. В данном документе проясняются несколько черт классических
Классический сервер
Классический сервер Классический сервер Firebird использует процессы xinetd или inetd для обработки поступающих запросов. (Применяемый процесс зависит от версии Linux.) Нет необходимости явно запускать сервер. Процесс xinetd или inetd запускается автоматически; когда он получает запрос
Стратегия покупки
Стратегия покупки Перво-наперво решите, какой из трех вариантов хотите купить (сумку, рюкзак или усиленный), из какого материала и готовы ли вы потратиться на бренд. Только после этого стоит смело отправляться искать нужное по Интернету и магазинам.И имейте в виду – к
Кто сдвигает с рынка классический компьютер? Михаил Ваннах
Кто сдвигает с рынка классический компьютер? Михаил Ваннах Опубликовано 14 ноября 2013 Ведущие аналитические фирмы ИТ-мира, обозревая состояние дел на глобальном и локальных рынках, публикуют печальные для отрасли цифры сбыта настольных и
ОПЫТЫ: Три студента: Классический сыск в век высоких технологий
ОПЫТЫ: Три студента: Классический сыск в век высоких технологий Этим материалом мы начинаем серию публикаций о возможностях отечественных правоохранительных органов в борьбе с преступлениями, совершенными с помощью электронных средств. Все истории абсолютно реальны, а
Классический случай обмана
Классический случай обмана Какая самая большая угроза безопасности ваших деловых активов? Ответ прост – это социальный инженер – нечестный фокусник, который заставляет вас смотреть на его левую руку, пока правой ворует ваши секреты. Этот персонаж часто так дружелюбен и
Стратегия и тактика
Стратегия и тактика С точки зрения системного администратора непроизводительной затратой времени является любое дело, которое можно было бы исключить, если бы нашлось время на создание инфраструктуры, позволяющей от этого дела отказаться. Иными словами, лучшим