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