[Moscow.pm] Strategy ("Стратегия") и "Декоратор"(Decorator/Wrapper) реализация на Perl

Ruslan Zakirov ruz на bestpractical.com
Ср Июл 9 16:36:50 PDT 2008


2008/7/10 Orlovsky Alexander <nordicdyno на yandex.ru>:
>
>
> 10.07.08, 01:09, "Ruslan Zakirov" <ruz на bestpractical.com>:
>
>> Реализация декоратора в SVK:
>> http://code.bestpractical.com/svk/trunk/lib/SVK/Editor/ByPass.pm
>> В accessor _editor кладется следующий по ходу редактор. Декораторы
>> наследуются от SVK::Editor::ByPass. Терминальные редакторы от
>> SVK::Editor (аля ConcreteComponents). Таким образом можно выстраивать
>> цепочки редактирования.
>
> А что из себя представляет цепочка редактирования на практике?
> Т.е. описать работу этого кода на каком-нибудь примере, а то не все понятно :)
Это выходит за рамки шаблонов программирования :) SVN/SVK используют
редакторы для переноса изменений из дерева в дерево. У вас есть
редактор и изменение, вы запускаете driver, который вызывает методы
редактора (open_dir a, open_dir b, open_file x, apply_textdelta
a_change, close_file x ...). Редактор вносит изменения в структуру,
что позволяет абстрагировать форматы хранения данных от протоколов
передачи изменений. Используя декораторы, можно делать разные
интересные штуки по пути к финальному редактору.

Преобразование путей между источником и целью -
http://code.bestpractical.com/svk/trunk/lib/SVK/Editor/Translate.pm.

Отфильтровать изменения -
http://code.bestpractical.com/svk/trunk/lib/SVK/Editor/FilterProp.pm

И прочие вкусности :)

>> Делигирование при отсутствии локальной реализации сделано через
>> AUTOLOAD, что позволяет свободно менять базовый интерфейс без
>> изменения SVK::Editor::ByPass.
>> Вполне себе живет, можно улучшить.
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards, Ruslan.


Подробная информация о списке рассылки Moscow-pm