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