поведенческий шаблон проектирования, предназначенный для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет выбирать алгоритм путем определения соответствующего класса. Шаблон Стратегия позволяет менять выбранный алгоритм независимо от объектов-клиентов, которые его используют.
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.
Комментариев нет:
Отправить комментарий