Для тех, кто знаком с моделью Посредника ...
Я хочу реализовать шаблон Mediator в Delphi, но компилятор Delphi не может обрабатывать требуемые циклические ссылки.
Глядя на исходную диаграмму GOF из «Шаблонов проектирования», Посредник имеет ссылку на каждого Коллега, но многие объекты Коллеги имеют ссылку на Посредника.
Это не проблема в большинстве языков, но мой компилятор Delphi дает мне 'F2047 Ссылка на круговую единицу ...'
Будет ли такой подход , использующий интерфейсы, каким-либо образом использоваться? (кажется сложным)
Я использую Delphi 2010
[ Краткое изложение решения ]
Просто для краткого изложения принятого ответа: На языках, которые допускают циклические ссылки, вы можете опустить абстрактный класс-посредник (как обсуждалось в разделе «Реализация» GoF на стр. 278). Единственный способ реализовать Mediator в Delphi без абстрактного класса Mediator - это собрать все свои классы в одном модуле .
В противном случае вам потребуется дополнительный абстрактный базовый класс Mediator в дополнение к конкретному подклассу.
Ваши условия использования для трех юнитов будут выглядеть так:
ConcreteColleage1 использует медиатор
БетонМедиатор использует медиатор, ConcreateColleague1
Медиатор (тоже не используется)
Нет циклических ссылок!