12.11.2004, 11:51 | #1 |
Moderator
|
Реализация паттерна Visitor в Axapta
На днях, работая над довольно большой задачей, заметил, что для решения небольшой подзадачки мне идеально походит паттерн Visitor.
Про сам паттерн можно прочитать здесь , я лишь подчеркну особенности реализации паттерна в Аксапте. Невозможность перегрузки методов в Axapta вызывает наибольшие затруднения при реализации паттерна. Так двойную диспетчеризацию, лежащую в основе паттерна пришлось реализовать вот таким довольно корявым образом: PHP код:
Роль Класс Посетитель(Visitor) Visitor Конкретный посетитель(Concrete Visitor) VacationVisitor Конкретный элемент (Concrete Element) Employee, Boss |
|
12.11.2004, 14:02 | #2 |
Участник
|
PHP код:
PHP код:
PHP код:
PHP код:
|
|
12.11.2004, 14:13 | #3 |
Moderator
|
Цитата:
isEqualOrSuperclass
PHP код:
|
|
12.11.2004, 14:34 | #4 |
Участник
|
Цитата:
Изначально опубликовано Андре
[B] Не - здесь по смыслу нужен именно isEqual, для SuperClass может своя логика реализовываться. то есть будет не общий алгоритм для всех боссов, а общий алгоритм "для всех боссов у которых мы не нашли еще разновидностей" - с моей точки зрения это нехорошо, так как вводит лишнюю зависимость. Цитата:
Насчет макросов - красиво. Но я стараюсь их избегать
|
|
12.11.2004, 15:35 | #5 |
Moderator
|
Цитата:
.... это нехорошо, так как вводит лишнюю зависимость.
Цитата:
даже в pack unpack
|
|
13.11.2004, 14:14 | #6 |
Участник
|
Спасибо за отличный пример и за отличную ссылку.
|
|
|
|