C# Стратегія (Strategy)

2075 / C# / Шаблони / Стратегія (Strategy)

 

Найпопулярніший шаблон

Інкапсулює алгоритм чи поведінку

Через інтерфейс можна підставляти об'єкти в головний клас

 

static void Main(string[] args)
{
  Car auto = new Car(new PetrolMove());
  auto.Move();
  auto.Movable = new ElectricMove();
  auto.Move();

  Console.ReadKey();
}

interface IMovable
{
  void Move();
}

class PetrolMove : IMovable
{
  public void Move()
  {
    Console.WriteLine("Petrol");
  }
}

class ElectricMove : IMovable
{
  public void Move()
  {
    Console.WriteLine("Electric");
  }
}

class Car
{
  public IMovable Movable { private get; set; }
  public Car(IMovable mov)
  {
    Movable = mov;
  }

  public void Move()
  {
    Movable.Move();
  }
}

Petrol
Electric