C # классы дизайн вопрос связи - PullRequest
0 голосов
/ 27 июля 2010

У меня есть вопросы дизайна по этому сценарию: Предположим, у вас есть форма с множеством сайтов, которые нужно заполнить , давайте назовем каждый сайт плагином. Среди других классов я создал класс PluginManager, который использует все плагины и предоставляет некоторые функции и свойства:

class PluginManager
{
  ...
  BasePlugin CurrentPlugin {get;set;}
  IEnumerable<BasePlugin> OpenedPlugins {}
  bool SetPlugin() {..}
  ...
}

class BasePlugin {}
class MyPlugin : BasePlugin {}

Помимо прочего, он обрабатывает отображение выбранного плагина / сайта .

До сих пор мне никогда не нужно было общаться между 2 или более плагинами. Теперь я делаю, и я хотел спросить вас, как бы вы это сделали.

Мое мнение состояло в том, чтобы добавить en Event к классу BasePlugin и обработать его в классе PluginsManager, каким-то образом, что Плагин, поднимающий Event, обеспечит в EventArgs типы всех другие плагины, которые должны быть затронуты, и список delegates, указывающий на методы, которые должны быть выполнены.

Есть идеи? Спасибо!

Ответы [ 2 ]

2 голосов
/ 27 июля 2010

Взгляните на шаблон "Цепочка ответственности" . Плагин вызывает менеджера, чтобы получить информацию из в любом месте . Менеджер просит каждый плагин поместить информацию в предоставленный интерфейс. (Что такое Шаблон посетителя ).

Greets Flo

1 голос
/ 27 июля 2010

Звучит как возможный образец посредника для меня (см. Также здесь описание с кодом C #).

Класс-посредник управляет связью между другими классами. Ваш класс PlugInManager будет иметь личный экземпляр Mediator, и все подключаемые модули будут регистрироваться посредником для получения сообщений.

Вероятно, есть 101 способ сделать это, поэтому ожидайте множество ответов.

...