Где разместить мою функцию?В мой родной Gui или в мой ведущий? - PullRequest
0 голосов
/ 20 октября 2018

У меня есть следующий сценарий: у меня есть кнопки и PreviewButton в слое Gui, у них есть общая часть с именем BasedButton.Кнопка знает только IButtonPresenter, интерфейс ButtonPresenter.У кнопки не должно быть логики, презентатор может содержать некоторую логику.Проблема в том, что PreviewButton - настолько простой класс, что ему не нужен ни один ведущий.За исключением одной вещи: функция hasLed (), которая в зависимости от типа кнопки (простой случай переключения) определяет, имеет ли индикатор Button и PreviewButton светодиод или нет. Где должна быть эта общая функция hasLed ()? Моя идея:

  1. PreviewButton также должен иметь презентатор, а функция hasLed () должна быть в общей части Button.и ведущий PreviewButton.Проблема: кажется чрезмерным, что только для этой одной функции я должен представить докладчика.

  2. Поместите эту логику: hasLed () в BasedButton (в общей части Button и PreviewButton).Проблема: я пытался избежать введения какой-либо логики в мой родной интерфейс.

  3. Создайте некоторое пространство имен (или используйте пространство имен типа enum!) И поместите в него эту простую функцию как встроенную функцию.Проблема: «логика» помещена в «странный» и не ожидаемый класс.

  4. Поместите функцию hasLed () в один из наших классов менеджера в моем уровне презентаторов.Преимущество: интерфейс менеджера доступен для всех родных классов Gui.И код остается общим (без дублирования кода).Недостаток: мои менеджеры с такой функцией кажутся немного странными.

  5. Другая идея?

Может быть, сейчас я бы выбрал 4-й ...

1 Ответ

0 голосов
/ 20 октября 2018

Я бы выбрал вариант 1. Это не чрезмерная инженерия (тогда как попытка отличить PreviewButton от Button на уровне интерфейса для меня выглядит чрезмерно сложной), это всего лишь шаблон, но вы избегаете ненужных сложностей.дизайна таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...