понедельник, 16 апреля 2012 г.

Стратегия

поведенческий шаблон проектирования, предназначенный для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет выбирать алгоритм путем определения соответствующего класса. Шаблон Стратегия позволяет менять выбранный алгоритм независимо от объектов-клиентов, которые его используют.
program strategy;
type
  IStrategy = interface
    procedure Algorithm;
  end;

  TConcreteStrategy1 = class(TInterfacedObject, IStrategy)
  public
    procedure Algorithm;
  end;

procedure TConcreteStrategy1.Algorithm;
begin
  //TODO
end;

type
  TConcreteStrategy2 = class(TInterfacedObject, IStrategy)
  public
    procedure Algorithm;
  end;

procedure TConcreteStrategy2.Algorithm;
begin
  //TODO
end;

type
  TContext = class
  private
    FStrategy: IStrategy;
  public
    procedure ContextMethod;
    property Strategy: IStrategy read FStrategy write FStrategy;
  end;

procedure TContext.ContextMethod;
begin
  FStrategy.Algorithm;
end;

var
  context: TContext;
begin
  context := TContext.Create;
  try
    context.Strategy := TConcreteStrategy1.Create;
    context.ContextMethod;
    context.Strategy := TConcreteStrategy2.Create;
    context.ContextMethod;
  finally
    context.Free();
  end;
end.

Комментариев нет:

Отправить комментарий