Стратегия относится к числу многозначных понятий. Существуют сотни определений стратегии, каждое из которых по-своему верно. Стратегия – это:
- искусство руководства,
- долгосрочный план,
- принципы ведения бизнеса,
- набор правил для принятия решений,
- способ построения уникальной рыночной позиции,
- маневр, позволяющий обойти конкурентов,
- причинно-следственная цепочка целей.
Последнее из этих определений дано основателями Сбалансированной системы показателей (Balanced Scorecard) Нортоном и Капланом.
На него я и буду опираться, поскольку его удобно использовать как инструмент для описания стратегии и организации стратегического контроллинга. Подчеркну, что я не отвергаю других определений стратегии.
В том подходе, который я буду развивать, каждое из них найдет свое применение.
Итак, стратегия – это причинно-следственная цепочка целей. Теперь необходимо разобраться с понятием «цели», которое также не относится к числу элементарных.
Я выделяю четыре уровня целеполагания: идеалы, стратегические намерения, стратегические цели и задачи.
Идеалы
Идеалы – это цель высшего уровня. Она принципиально не достижима, но является притягательным ориентиром, определяет смысл деятельности организации. Идеалы находят отражение в миссии компании.
Например, компания, занимающаяся производством и монтажом окон, видит свое предназначение в том, чтобы создать стандарт высочайшего уровня сервиса, который станет образцом обслуживания клиентов для любой отрасли В2С.
Поскольку для улучшения качества обслуживания нет предела, то это цель уровня идеала. К ней можно приближаться, но никогда нельзя сказать, что мы достигли финиша.
Стратегические намерения
Стратегические намерения – это цели, связанные с определенным периодом времени. Они характеризуют результаты, которых компания намерена достичь к установленному сроку.
Например, та же оконная компания выражает намерение в течение пяти лет стать лидером по уровню сервиса в московском регионе. Это амбициозная, но принципиально достижимая цель.
Стратегические намерения отражаются в документе, который обычно называется «Стратегическое видение». Видение дает картину будущего, каким его видят лидеры организации, определяющие ее стратегию.
Стратегическое видение должно давать ответы на пять основных вопросов:
- В чем состоят стратегические проблемы компании (почему возникла необходимость в изменениях и какие задачи должна решить стратегия)?
- Каковы стратегические намерения (долгосрочные целевые ориентиры)?
- Как позиционируется компания на рынке (кто целевые клиенты, в чем ценность наших услуг, каковы наши отличия от конкурентов)?
- Какова организационная концепция компании (основные принципы управления)?
- Каковы главные направления изменений, которые необходимо провести в связи с реализацией стратегии?
При наличии ясных ответов на эти вопросы можно утверждать, что компания имеет вполне определенную стратегию и может приступить к созданию механизма ее исполнения. Инструментом исполнения стратегии является Сбалансированная система показателей.
Стратегические цели
Стратегические цели характеризуют конкретные достижения компании, связанные с определенным периодом времени. Определение цели должно содержать критерий успеха. То есть, измеримый показатель, который позволяет определить достигнута ли поставленная цель.
Одной из стратегических целей оконной компании, стремящейся к повышению уровня сервиса, может быть, например, достижение высокой лояльности клиентов, характеризующейся повторными продажами. Целевой показатель на пятилетний период: 60% повторных продаж в общем объеме продаж компании.
Можно сказать, что стратегические цели в своей совокупности дают более точную, сфокусированную картину будущего по сравнению с той, которая представлена стратегическим видением. Стратегические цели отражаются на карте стратегии, которая является одним из элементов Сбалансированной системы показателей.
Карта стратегии отображает не только цели, но и причинно-следственные связи между ними. Это графическое изображение стратегии, которую мы определили в начале статьи как «причинно-следственную цепочку целей».
Таким образом, карта стратегии преобразует словесное описание стратегии в наглядное графическое представление, которое дополняется измеримыми целевыми показателями.
На рисунке приведен пример карты стратегии, на которой стратегические цели сгруппированы по четырем проекциям: финансы, рынок, процессы, потенциал.
Стратегические задачи
Достижение каждой стратегической цели обеспечивается определенной последовательностью действий, мероприятий, проектов. Назовем их стратегическими задачами – целями нижнего уровня.
Стратегические задачи являются частью Сбалансированной системы показателей. Каждая задача связана с одной или несколькими целями и входит в общий стратегический план компании, направленный на достижение поставленных целей.
Именно стратегические задачи приводят стратегию в действие и обеспечивают ее выполнение.
В совокупности стратегические задачи образуют «портфель» стратегических проектов компании, скоординированных между собой и обеспеченных ресурсами.
Резюме
Описание стратегии компании включает следующие элементы:
- Миссия. Определение «предназначения» компании, ее цели высшего уровня.
- Стратегическое видение. Ясные ответы на пять вопросов: стратегические проблемы, стратегические намерения, позиционирование на рынке, организационная концепция, главные направления изменений.
- Карта стратегии. Четко сформулированные стратегические цели, соединенные причинно-следственными связями.
- Целевые показатели. Измеримые критерии успеха в достижении стратегических целей.
- Стратегические задачи. Стратегические мероприятия и проекты, обеспечивающие достижение целей.
Возвращаясь к определениям стратегии, приведенным в начале статьи, мы можем увидеть, что в описании стратегии, к которому мы пришли, присутствуют и «долгосрочный план», и «уникальное позиционирование на рынке» и «принципы ведения бизнеса» – все это отражается в целях компании, целевых показателях и стратегических проектах. Неявно присутствует здесь и «искусство управления», поскольку успех в разработке стратегии только наполовину обеспечивается научными методами и технологией. Вторая половина – это искусство.
При наличии перечисленных здесь артефактов можно утверждать, что компания имеет вполне определенную стратегию и способна управлять ходом ее выполнения. Впрочем, для того чтобы управлять выполнением стратегии, необходимо организовать процессы информационного обеспечения, планирования, контроля. Но это уже другая тема.
Фото в анонсе: Unsplash
Источник: https://www.e-xecutive.ru/management/practices/1478578-iz-chego-sostoit-strategiya?page=4
Социология организаций
Стратегия — интегрированная модель действий, предназначенных для достижения целей предприятия. Содержанием стратегии служит набор правил принятия решений, используемый для определения основных направлений деятельности.
В литературе по стратегическому планированию существует два противоположных взгляда на понимание стратегии.
В первом случае стратегия – это конкретный долгосрочный план достижения некоторой цели, а выработка стратегии – это процесс нахождения некоторой цели и составление долгосрочного плана.
Такой подход основывается на том, что все возникающие изменения предсказуемы, происходящие в среде процессы носят детерминированный характер и поддаются полному контролю и управлению.
Во втором случае под стратегией понимается долгосрочное качественно определенное направление развития предприятия, касающееся сферы, средств и формы ее деятельности, системы внутрипроизводственных отношений, а также позиций предприятия в окружающей среде.
При таком понимании, стратегию можно охарактеризовать как выбранное направление деятельности, функционирование и рамках которого должно привести организацию к достижению стоящих перед ней целей.
В стратегическом планировании направление деятельности выбирается обычно по результатам стратегического анализа, проведенного с помощью матрицы БКГ и других матриц, а также по результатам SWOT анализа предприятия.
В деловой жизни под стратегией понимается общая концепция того, как достигаются цели организации, решаются стоящие перед ней проблемы и распределяются необходимые для этого ограниченные ресурсы.
Такая концепция (соответствует стратегии второго типа) включает в себя несколько элементов. Прежде всего, к ним относится система целей, включающая миссию, общеорганизационные и специфические цели.
Другой элемент стратегии – политика, или совокупность конкретных правил организационных действий, направленных на достижение поставленных целей.
Обычно стратегия разрабатывается на несколько лет вперед, конкретизируется в различного рода проектах, программах, практических действиях и реализуется в процессе их выполнения.
Значительные затраты труда и времени многих людей, необходимые для создания стратегии предприятия, не позволяют ее часто менять или серьезно корректировать. Поэтому она формулируется в достаточно общих выражениях.
Это – предполагаемая стратегия.
Вместе с тем, как внутри организации, так и вне ее появляются новые непредвиденные обстоятельства, которые не укладываются в первоначальную концепцию стратегии.
Они могут, например, открыть новые перспективы развития и возможности для улучшения существующего положения дел или, наоборот, заставить отказаться от предполагаемой политики и плана действий.
В последнем случае первоначальная стратегия становится нереализуемой и предприятие переходит к рассмотрению и формулированию неотложных стратегических задач.
Любая стратегия включает общие принципы, на основе которых менеджеры данной организации могут принимать взаимоувязанные решения, призванные обеспечить координированное и упорядоченное достижение целей в долгосрочном периоде.
Выделяют четыре различные группы таких принципов (правил):
- Правила, используемые при оценке результатов деятельности фирмы в настоящем и в перспективе. Качественную сторону критериев оценки обычно называют ориентиром, а количественное содержание – заданием.
- Правила, по которым складываются отношения фирмы с ее внешней средой, определяющие: какие виды продукции и технологии она будет разрабатывать, куда и кому сбывать свои изделия, каким образом добиваться превосходства над конкурентами. Это набор правил называется продуктово-рыночной стратегией или стратегией бизнеса.
- Правила, по которым устанавливаются отношения и процедуры внутри организации. Их нередко называют организационной концепцией.
- Правила, по которым фирма ведет свою повседневную деятельность, называемые основными оперативными приемами.
Основные отличительные особенности стратегии выделил И. Ансофф в своей книге «Стратегическое управление», 1989 г.:
- Сформулированная стратегия должна быть использована для разработки стратегических проектов методом поиска. Роль стратегии в поиске состоит в том, чтобы, во-первых, помочь сосредоточить внимание на определенных участках и возможностях; во-вторых, отбросить все остальные возможности как несовместимые со стратегией.
- Необходимость в стратегии отпадает, как только реальный ход развития выведет организацию на желательные события.
- В ходе формулирования стратегии нельзя предвидеть все возможности, которые откроются при составлении проекта конкретных мероприятий. Поэтому приходится пользоваться сильно обобщенной, неполной и неточной информацией о различных альтернативах.
- Как только в процессе поиска открываются конкретные альтернативы, появляется и более точная информация. Однако она может поставить под сомнение обоснованность первоначального стратегического выбора. Поэтому успешное использование стратегии невозможно без обратной связи.
- Поскольку для отбора проектов применяются как стратегии, так и ориентиры, может показаться, что это одно и то же. Но это разные вещи. Ориентир представляет собой цель, которую стремится достичь фирма, а стратегия – средство для достижения цели. Ориентиры – это более высокий уровень принятия решений. Стратегия, оправданная при одном наборе ориентиров, не будет таковой, если ориентиры организации изменятся.
- Наконец, стратегия и ориентиры взаимозаменяемы как в отдельные моменты, так и на различных уровнях организации. Некоторые параметры эффективности (например, доля рынка) в один момент могут служить фирме ориентирами, а в другой – станут ее стратегией. Далее, поскольку ориентиры и стратегии вырабатываются внутри организации, возникает типичная иерархия: то, что на верхних уровнях управления является элементами стратегии, на нижних превращается в ориентиры.
Стратегия в компании разрабатывается и реализуется на всех уровнях стратегического управления:
«Первый уровень – корпоративный – присутствует в компаниях, действующих в нескольких сферах бизнеса.» Здесь принимаются решения о закупках, продажах, ликвидациях, перепрофилировании тех или иных сфер бизнеса, рассчитываются стратегические соответствия между отдельными сферами бизнеса, разрабатываются планы диверсификации, осуществляется глобальное управление финансовыми ресурсами.
Второй уровень – сферы бизнеса – уровень первых руководителей недиверсифицированных организаций, или совершенно независимых, отвечающих за разработку и реализацию стратегии сферы бизнеса.
На этом уровне разрабатывается и реализуется стратегия, базирующаяся на корпоративном стратегическом плане, основной целью которой является повышение конкурентоспособности организации и ее конкурентного потенциала.
Третий – функциональный – уровень руководителей функциональных сфер: финансов, маркетинга, НИОКР, производства, управления персоналом и т.д.
Четвертый – линейный – уровень руководителей подразделений организации или ее географически удаленных частей, например, представительств, филиалов.
Функции высшего руководства в процессе стратегического планирования:
- Углубленное изучение состояния среды, целей и разработки стратегий: окончательное уяснение сущности определенных целей и более широкое доведение идей стратегий и смысла целей до сотрудников фирмы.
- Принятие решений по эффективности использования имеющихся у фирмы ресурсов.
- Решения по поводу организационной структуры.
- Проведение необходимых изменений на фирме.
- Пересмотр плана выполнения стратегии в случае возникновения непредвиденных обстоятельств.
Недиверсифицированная организация имеет, соответственно, три уровня стратегий.
Выбор стратегии предполагает изучение альтернативных направлений развития организации, их оценку и выбор лучшей стратегической альтернативы для реализации. При этом используется специальный инструментарий, включающий количественные методы прогнозирования, разработку сценариев будущего развития, портфельный анализ.
Реализация стратегии осуществляется через разработку программ, бюджетов и процедур, которые можно рассматривать как среднесрочные и краткосрочные планы реализации стратегии.
В процессе реализации стратегии каждый уровень руководства решает свои определенные задачи и осуществляет закрепленные за ним функции. Решающая роль принадлежит высшему руководству. Его деятельность на стадии реализации стратегии может быть представлена в виде пяти последовательных этапов.
Первый этап: углубленное изучение состояния среды, целей и разработанных стратегий. На данном этапе решаются следующие основные задачи:
- уяснение сущности выдвинутых целей, выработанных стратегией, их корректности и соответствия друг другу, а также состоянию среды;
- доведение идей стратегического плана и смысла целей до сотрудников предприятия с целью подготовки условий для их вовлечения в процесс реализации стратегий.
Второй этап: разработка комплекса решений по эффективному использованию имеющихся у предприятия ресурсов.
На этом этапе проводится оценка ресурсов, их распределение и приведение в соответствие с реализуемыми стратегиями.
Для этого составляются специальные программы, выполнение которых должно способствовать развитию ресурсов. Например, это могут быть программы повышения квалификаций сотрудников.
На третьем этапе высшее руководство принимает решения о внесении изменений в действующую организационную структуру.
Четвертый этап состоит в проведении тех необходимых изменений на предприятии, без которых невозможно приступить к реализации стратегии. Для этого составляется сценарий возможного сопротивления изменениям, разрабатываются мероприятия по устранению или уменьшению до минимума реального сопротивления и закреплению проведенных изменений.
Пятый этап: корректировка стратегического плана в том случае, если этого настоятельно требуют вновь возникшие обстоятельства.
Результаты реализации стратегии оцениваются, и с помощью системы обратной связи осуществляется контроль деятельности организации, в ходе которого может происходить корректировка предыдущих этапов.
Источник: https://moodle.kstu.ru/mod/book/view.php?id=40010&chapterid=9613
Стратегии поддержания этнической идентичности | Студент-Сервис
Наиболее естественным для человека является стремление сохранить или восстановить позитивную этническую идентичность, которая дает ощущение психологической безопасности и стабильности. Для этого используется стратегия, названная А.Тэшфелом и Дж.Тернером стратегией социального творчества. Она может принимать различные формы, связанные с пересмотром критериев сравнения.
Это может быть поиск новых оснований для сравнения. Попытку таким способом сохранить позитивную этническую идентичность можно обнаружить в содержании автостереотипов групп, потерпевших поражение в межгрупповом соревновании.
Давно известно, что группы с более низким статусом имеют тенденцию характеризовать себя с точки зрения теплоты и добросердечия. Например, в нашем исследовании, проведенном в конце 80-х гг.
, московские студенты воспринимали представителей своей этнической общности (русских) как гостеприимных, дружелюбных, гуманных, добрых и отзывчивых. А американцы в их представлении оказались деловитыми, предприимчивыми, трудолюбивыми и добросовестными, т.е.
обладающими качествами, которые способствуют достижению успеха в делах, но в России традиционно занимают низкие места в иерархии личностных черт как ценностей.
Другой пример использования новых критериев для сравнения – успех движения афроамериканцев под лозунгом «черное – это прекрасно» в 70-е гг. в США, способствовавшего формированию их позитивной идентичности. Именно с этого времени американские исследователи обнаружили, что маленькие черные дети стали намного реже выбирать белых кукол как наиболее привлекательных и похожих на них.
Стратегия социального творчества проявляется и в восстановлении субъективного благополучия с помощью выбора для сравнения еще менее успешных или еще более слабых групп.
Так, восточные немцы после воссоединения Германии оказались на более низкой ступени социальной иерархии, чем западные, но свое недовольство они направили не на могущественное государство и не на доминантную группу западных немцев. Свои предубеждения и акты агрессии они направили на еще более уязвимые группы вьетнамцев, турок и других иностранных рабочих.
При неблагоприятном межгрупповом сравнении члены групп дискриминируемого меньшинства могут выбрать и другую стратегию – принять правильную самоидентификацию вместе с негативной оценкой группы.
В этом случае формируется негативная этническая идентичность, которая может сопровождаться ощущением неполноценности, ущемленности и даже стыда за представителей своего этноса.
Этот тип этнической идентичности неблагоприятен для межгрупповых отношений, так как сопровождается обострением восприятия дискриминации и увеличением субъективной культурной дистанции с группой большинства. Он неблагоприятен и для личностного роста индивида.
В эмпирических исследованиях не раз подтверждалось, что дети, чья национальная принадлежность отличается от большинства в классе, имеют низкую самооценку.
А если группы находятся в состоянии конфликта, на самооценку оказывает влияние уже не национальный состав класса, а широкий социальный контекст: одинаково низкая самооценка была выявлена у палестинских подростков и в совместных еврейско-арабских школах, и в чисто арабских.
Осознавая себя членами группы меньшинства, они сравнивали себя не с соучениками-евреями, а с группой большинства в целом.
Не случайно, израильские психологи при проведении семинаров по урегулированию этнического конфликта между арабами и евреями обязательным подготовительным этапом рассматривают повышение самооценки их участников-палестинцев.
Но принимая негативную идентичность, человек может по-разному реагировать на негативные суждения о своем этносе, а значит, на негативный образ самого себя, сложившийся в глазах представителей доминантной группы. И в этом случае у него есть возможности избежать чувства неполноценности и со¬хранить высокую самооценку.
Он может относить негативные суждения к другим членам своей группы, но не к самому себе, установив психологическую границу между группой и собой.
Подобная тенденция обнаружена у современных еврейских подрост¬ов, среди которых при переходе к юношескому возрасту увеличивается число тех, кто считает, что в России нет перспектив для евреев, но растет доля оптимистов относительно своих жизненных перспектив в этой стране. Иными словами, они демонстрируют «разотождествление» себя и своего народа.
Осознание себя как члена негативно оцениваемой в обществе группы допускает и формирование идентичности по принципу: «пусть мы такие плохие, но это действительно мы».
Подобное аффективное, даже агрессивное подчеркивание этнической принадлежности выявлено у выходцев из стран Северной Африки во Франции, где молодежь из среды иммигрантов продолжает претендовать на принадлежность к группе уроженцев Магрйба, хотя почти полностью отвергает традиционные этнокультурные ценности и стереотипы поведения.
Источник: https://student-servis.ru/spravochnik/strategii-podderzhaniya-etnicheskoj-identichnosti/
Стратегия
Также известен как: Strategy
Стратегия — это поведенческий паттерн проектирования, который определяет семейство схожих алгоритмов и помещает каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять прямо во время исполнения программы.
Вы решили написать приложение-навигатор для путешественников. Оно должно показывать красивую и удобную карту, позволяющую с лёгкостью ориентироваться в незнакомом городе.
Одной из самых востребованных функций являлся поиск и прокладывание маршрутов. Пребывая в неизвестном ему городе, пользователь должен иметь возможность указать начальную точку и пункт назначения, а навигатор — проложит оптимальный путь.
Первая версия вашего навигатора могла прокладывать маршрут лишь по дорогам, поэтому отлично подходила для путешествий на автомобиле. Но, очевидно, не все ездят в отпуск на машине. Поэтому следующим шагом вы добавили в навигатор прокладывание пеших маршрутов.
Через некоторое время выяснилось, что некоторые люди предпочитают ездить по городу на общественном транспорте. Поэтому вы добавили и такую опцию прокладывания пути.
Но и это ещё не всё. В ближайшей перспективе вы хотели бы добавить прокладывание маршрутов по велодорожкам. А в отдалённом будущем — интересные маршруты посещения достопримечательностей.
Код навигатора становится слишком раздутым.
Если с популярностью навигатора не было никаких проблем, то техническая часть вызывала вопросы и периодическую головную боль. С каждым новым алгоритмом код основного класса навигатора увеличивался вдвое. В таком большом классе стало довольно трудно ориентироваться.
Любое изменение алгоритмов поиска, будь то исправление багов или добавление нового алгоритма, затрагивало основной класс. Это повышало риск сделать ошибку, случайно задев остальной работающий код.
Кроме того, осложнялась командная работа с другими программистами, которых вы наняли после успешного релиза навигатора. Ваши изменения нередко затрагивали один и тот же код, создавая конфликты, которые требовали дополнительного времени на их разрешение.
Паттерн Стратегия предлагает определить семейство схожих алгоритмов, которые часто изменяются или расширяются, и вынести их в собственные классы, называемые стратегиями.
Вместо того, чтобы изначальный класс сам выполнял тот или иной алгоритм, он будет играть роль контекста, ссылаясь на одну из стратегий и делегируя ей выполнение работы. Чтобы сменить алгоритм, вам будет достаточно подставить в контекст другой объект-стратегию.
Важно, чтобы все стратегии имели общий интерфейс. Используя этот интерфейс, контекст будет независимым от конкретных классов стратегий. С другой стороны, вы сможете изменять и добавлять новые виды алгоритмов, не трогая код контекста.
Стратегии построения пути.
В нашем примере каждый алгоритм поиска пути переедет в свой собственный класс. В этих классах будет определён лишь один метод, принимающий в параметрах координаты начала и конца пути, а возвращающий массив точек маршрута.
Хотя каждый класс будет прокладывать маршрут по-своему, для навигатора это не будет иметь никакого значения, так как его работа заключается только в отрисовке маршрута. Навигатору достаточно подать в стратегию данные о начале и конце маршрута, чтобы получить массив точек маршрута в оговорённом формате.
Класс навигатора будет иметь метод для установки стратегии, позволяя изменять стратегию поиска пути на лету. Такой метод пригодится клиентскому коду навигатора, например, переключателям типов маршрутов в пользовательском интерфейсе.
Различные стратегии попадания в аэропорт.
Вам нужно добраться до аэропорта. Можно доехать на автобусе, такси или велосипеде. Здесь вид транспорта является стратегией. Вы выбираете конкретную стратегию в зависимости от контекста — наличия денег или времени до отлёта.
-
Контекст хранит ссылку на объект конкретной стратегии, работая с ним через общий интерфейс стратегий.
-
Стратегия определяет интерфейс, общий для всех вариаций алгоритма. Контекст использует этот интерфейс для вызова алгоритма.
Для контекста неважно, какая именно вариация алгоритма будет выбрана, так как все они имеют одинаковый интерфейс.
-
Конкретные стратегии реализуют различные вариации алгоритма.
-
Во время выполнения программы контекст получает вызовы от клиента и делегирует их объекту конкретной стратегии.
-
Клиент должен создать объект конкретной стратегии и передать его в конструктор контекста. Кроме этого, клиент должен иметь возможность заменить стратегию на лету, используя сеттер. Благодаря этому, контекст не будет знать о том, какая именно стратегия сейчас выбрана.
В этом примере контекст использует Стратегию для выполнения той или иной арифметической операции.
// Общий интерфейс всех стратегий.
interface Strategy is
method execute(a, b)
// Каждая конкретная стратегия реализует общий интерфейс своим
// способом.
class ConcreteStrategyAdd implements Strategy is
method execute(a, b) is
return a + b
class ConcreteStrategySubtract implements Strategy is
method execute(a, b) is
return a — b
class ConcreteStrategyMultiply implements Strategy is
method execute(a, b) is
return a * b
// Контекст всегда работает со стратегиями через общий
// интерфейс. Он не знает, какая именно стратегия ему подана.
class Context is
private strategy: Strategy
method setStrategy(Strategy strategy) is
this.strategy = strategy
method executeStrategy(int a, int b) is
return strategy.execute(a, b)
// Конкретная стратегия выбирается на более высоком уровне,
// например, конфигуратором всего приложения. Готовый объект-
// стратегия подаётся в клиентский объект, а затем может быть
// заменён другой стратегией в любой момент на лету.
class ExampleApplication is
method main() is
// 1. Создать объект контекста.
// 2. Получить первое число (n1).
// 3. Получить второе число (n2).
// 4. Получить желаемую операцию.
// 5. Затем, выбрать стратегию:
if (action == addition) then
context.setStrategy(new ConcreteStrategyAdd())
if (action == subtraction) then
context.setStrategy(new ConcreteStrategySubtract())
if (action == multiplication) then
context.setStrategy(new ConcreteStrategyMultiply())
// 6. Выполнить операцию с помощью стратегии:
result = context.executeStrategy(n1, n2)
// 7. Вывести результат на экран.
Когда вам нужно использовать разные вариации какого-то алгоритма внутри одного объекта.
Стратегия позволяет варьировать поведение объекта во время выполнения программы, подставляя в него различные объекты-поведения (например, отличающиеся балансом скорости и потребления ресурсов).
Когда у вас есть множество похожих классов, отличающихся только некоторым поведением.
Стратегия позволяет вынести отличающееся поведение в отдельную иерархию классов, а затем свести первоначальные классы к одному, сделав поведение этого класса настраиваемым.
Когда вы не хотите обнажать детали реализации алгоритмов для других классов.
Стратегия позволяет изолировать код, данные и зависимости алгоритмов от других объектов, скрыв эти детали внутри классов-стратегий.
Когда различные вариации алгоритмов реализованы в виде развесистого условного оператора. Каждая ветка такого оператора представляет собой вариацию алгоритма.
Стратегия помещает каждую лапу такого оператора в отдельный класс-стратегию. Затем контекст получает определённый объект-стратегию от клиента и делегирует ему работу. Если вдруг понадобится сменить алгоритм, в контекст можно подать другую стратегию.
-
Определите алгоритм, который подвержен частым изменениям. Также подойдёт алгоритм, имеющий несколько вариаций, которые выбираются во время выполнения программы.
-
Создайте интерфейс стратегий, описывающий этот алгоритм. Он должен быть общим для всех вариантов алгоритма.
-
Поместите вариации алгоритма в собственные классы, которые реализуют этот интерфейс.
-
В классе контекста создайте поле для хранения ссылки на текущий объект-стратегию, а также метод для её изменения. Убедитесь в том, что контекст работает с этим объектом только через общий интерфейс стратегий.
-
Клиенты контекста должны подавать в него соответствующий объект-стратегию, когда хотят, чтобы контекст вёл себя определённым образом.
- Горячая замена алгоритмов на лету.
- Изолирует код и данные алгоритмов от остальных классов.
- Уход от наследования к делегированию.
- Реализует принцип открытости/закрытости.
- Усложняет программу за счёт дополнительных классов.
- Клиент должен знать, в чём состоит разница между стратегиями, чтобы выбрать подходящую.
- Мост, Стратегия и Состояние (а также слегка и Адаптер) имеют схожие структуры классов — все они построены на принципе «композиции», то есть делегирования работы другим объектам. Тем не менее, они отличаются тем, что решают разные проблемы. Помните, что паттерны — это не только рецепт построения кода определённым образом, но и описание проблем, которые привели к данному решению.
-
Команда и Стратегия похожи по духу, но отличаются масштабом и применением:
- Команду используют, чтобы превратить любые разнородные действия в объекты. Параметры операции превращаются в поля объекта. Этот объект теперь можно логировать, хранить в истории для отмены, передавать во внешние сервисы и так далее.
- С другой стороны, Стратегия описывает разные способы произвести одно и то же действие, позволяя взаимозаменять эти способы в каком-то объекте контекста.
-
Стратегия меняет поведение объекта «изнутри», а Декоратор изменяет его «снаружи».
-
Шаблонный метод использует наследование, чтобы расширять части алгоритма. Стратегия использует делегирование, чтобы изменять выполняемые алгоритмы на лету. Шаблонный метод работает на уровне классов. Стратегия позволяет менять логику отдельных объектов.
-
Состояние можно рассматривать как надстройку над Стратегией. Оба паттерна используют композицию, чтобы менять поведение основного объекта, делегируя работу вложенным объектам-помощникам. Однако в Стратегии эти объекты не знают друг о друге и никак не связаны. В Состоянии сами конкретные состояния могут переключать контекст.
Источник: https://refactoring.guru/ru/design-patterns/strategy