Главная » Delphi » Delphi 2006 – Шаблон Strategy (Стратегия)

0

Этот весьма полезный в прикладной разработке шаблон позволяет изменять реализацию некоторого алгоритма без модификации клиентского кода. Это осуществляется предоставлением доступа к функциям через универсальный интерфейс, не зависящий от реализации. Обычно программисты решают эту проблему выделением исполнимого кода в библиотеку, отчуждаемую от программы (например, в DLL-файл, который можно заменять), однако такой подход не годится, если изменилась сама форма обращения к функции (например, появились новые параметры или возникло новое название). Шаблон Стратегия также поможет, если в программе имеется много условных ветвлений (частный случай — выбор реализации алгоритма в зависимости от значения параметра) — рис. 7.22.

В интерфейсе istrategy описывается конкретный перечень функций, подлежащий отчуждению от их реализации. Пусть он будет таким.

IStrategy = interface

function Sample: integer- end;

А реализуется этот интерфейс классом TConcreteStrategy: TConcreteStrategy = class(TObject, IStrategy)

Рис. 722. Шаблон Стратегия в Дизайнере модели

public

function Sample: integer ;

end;

function TConcreteStrategy.Sample: integer ; begin

result := 1; end;

Работа с этим интерфейсом поддерживается Контекстом — классом 1 TContext:

TContext = class strict private var

FStrategy: IStrategy;

public

function ContextRequest: Integer ; constructor Create(AStrategy :IStrategy);

end;

При конструировании контекст получает в качестве параметра экземпляр одного из наследников йнтерфейса IStrategy:

var сх: TContext;

сх:= TContext.Create( TConcreteStrategy.Create ); Теперь к соответствующему методу можно обратиться так: labell.Text := ex.ContextRequest.ToString;

При изменении алгоритма функции Sample достаточно лишь модифицировать ее реализацию для класса TConcreteStrategy, не внося изменения в существующую структуру классов и их взаимосвязи. И расширение перечня реализаций алгоритма Sample также происходит прозрачно, добавлением нового класса-реализатора IStrategy.

Бобровский С. И. Технологии Delphi 2006. Новые возможности. — СПб.: Питер, 2006. — 288 е.: ил.

По теме:

  • Комментарии