dir.by  
  Search  
Programming, development, testing
Паттерны, шаблоны проектирования | принципы ООП | рефакторинг кода
Стратегия (Strategy) это поведенческий шаблон проектирования
  Looked at 2177 times    
 Стратегия (Strategy) это поведенческий шаблон проектирования 
last updated: 31 March 2021
В объект мы подставляем стратегию. И меняется поведение объекта.
Пример
  C#  
interface IStrategyDistance
{
     void Calculate(int a, int b)
}

class StrategyDistanceByCar : IStrategyDistance
{
     public virtual double Calculate(a, b) { ...     }
}

class StrategyDistanceByTrain : IStrategyDistance
{
     public virtual double Calculate(a, b) { ... }
}

class Navigator
{
     private IStrategyDistance _strategy;

     void SetStrategyDistance(IStrategyDistance strategy)
     {
          this._strategy = strategy
     }

     void ExecuteStrategyDistance(int a, int b)
     {
          return _strategy.Calculate(a, b)
     }
}


class Application
{
     void Main()
     {
          Navigator navigator = new Navigator();

          context.setStrategyDistance(new StrategyDistanceByCar());
          result = navigator.ExecuteStrategyDistance(5, 9);

          context.setStrategyDistance(new StrategyDistanceByPlain());
          result = context.ExecuteStrategyDistance(6, 4);
     }
}
Пример 2
Например мы пишем ишру.
В нашей игре есть

interface IUnit
{
   ...
   SetMovement(IStrategyMove strategy)
}

class Elf : IUnit
{
   ...
   SetMovement(IStrategyMove strategy)
}

class Barbarian : IUnit
{
   ...
   SetMovement(IStrategyMove strategy)
}

Если на IUnit сделали заклинание мы меняем IStrategyMove
 
← Previous topic
Строитель (Builder) это порождающий шаблон проектирования
 
Next topic →
Что такое SOLID ?
 
Your feedback ... Comments ...
   
Your Name
Your comment (www links can only be added by a logged-in user)

  Объявления  
  Объявления  
 
Введение
Что такое подкласс или дочерний класс или наследник класса? Что такое родительский класс ?
Принципы ООП
Что такое Объектно-ориентированное программирование? Принципы: абстрагирование, инкапсуляция, наследование, полиморфизм
Рефакторинг кода
Что такое рефакторинг кода ?
Шаблоны проектирования
Порождающие паттерны
Фабричный метод (Factory Method) это порождающий шаблон проектирования
Абстрактная фабрика (Abstract Factory) это порождающий шаблон проектирования
Одиночка (Singleton) это порождающий шаблон проектирования
Прототип (Prototype) это порождающий шаблон проектирования
Строитель (Builder) это порождающий шаблон проектирования

Паттерны поведения
Стратегия (Strategy) это поведенческий шаблон проектирования
S.O.L.I.D. (5 принципов проектирования программы)
Что такое SOLID ?
Single Responsibility Principle (Принцип единственной обязанности) SOLID проектирование
Open/Closed Principle (Принцип открытости/закрытости) SOLID проектирование

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика