Вопрос о заводской схеме - PullRequest
       15

Вопрос о заводской схеме

3 голосов
/ 07 августа 2010

Я N00b для ОО.и люди бросают в меня огонь из-за того, что я не отвечаю или не имею никаких баллов.что я могу сказать, кроме как, я не квалифицирован !!!

В любом случае, вот мой вопрос. Я видел более чем достаточно примеров наследования в ваших классических «Книжных» примерах. Животное, где рычит Медведь, мяукает Кошка и т. Д.

Допустим, я создаюЭлементы управления Windows динамически основаны на некоторых формах поступления данных (база данных, XML)

Допустим, я создаю некоторую статическую фабрику под названием CreateControl, и я передаю тип элемента управления c для комбинированного списка, t для текстового поля и т. Д., Поэтому у меня есть следующий синтаксисControl c = CreateControl ('c');это возвращает мне ComboBox

, пока фабричный шаблон работает.В любое время, когда я хочу представить другой элемент управления, я перехожу к инструкции переключения шаблонов фабрики и добавляю еще один тип элемента управления.

В моих winforms, для каждого элемента управления, который я создаю, используя этот надежный шаблон фабрики, я хочу создавать обработчики событий на основе того, чтоконтроль Я получаю обратно, например, если я создаю ComboBox, я создаю обработчики событий для 5 различных событий. Если элементом управления является Textbox, есть 2 события.поэтому в зависимости от того, какой элемент управления создан, существуют разные обработчики событий с разными сигнатурами.

для некоторых событий требуются значения, поступающие из формы, в которой находятся элементы управления, некоторые не

У меня есть этот переключательзаявление для объявления событий на основе элементов управления, которые я создаю!как мне взять ту часть кода в коде позади и сделать правильную вещь, которая состоит в разделении проблем и небольшом или нулевом коде в коде позади !!

Спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 07 августа 2010

Ваш разговор о заявлениях переключателя звучит так, как будто вы неправильно понимаете, что делаете.

Существует два типа Factory: статический помощник, который звучит как то, что вы хотите / используете, и внедрение зависимостей.

Во-первых, вы делаете один или несколько статических методов в классе, который выполняет общий код конструирования для объектов - поэтому создайте его и настройте его обработчики событий. Я не уверен, почему вы передаете письмо, а не создаете один метод для каждого типа.

Вторая форма внедрения зависимостей, где объявляется фабричный интерфейс, который имеет метод для создания объекта, а затем вызывающие стороны передают различные реализации интерфейса In для создания различных объектов, поэтому тот, который создает Combos, создает текст контроля.

0 голосов
/ 07 августа 2010
  1. Передайте тип, а не символ или строка или что-то на заводе. Используйте Activator для создания экземпляра. Таким образом, фабрика получает гибкость

  2. Передайте фабрике Hashtable<Type, List>, который говорит для каждого элемента управления введите события для прослушивания.

  3. Начните принимать ответы. Это можно сделать и до 1.

...