Лучше иметь один класс для диалога нового элемента и диалога редактирования элемента или разных классов? - PullRequest
3 голосов
/ 31 января 2011

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

Мне было интересно, если вообще лучше выбрать дизайн, чтобы иметь два отдельных класса или иметь только один класс, которому передается параметр, который указывает, предназначен ли диалог для редактирования или для добавления.* Я использую C ++ с Qt, но я думаю, что тот же выбор дизайна применим к любому языку / фреймворку ООП.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 31 января 2011

Я обычно использую одни и те же классы MVC для режимов CREATE и EDIT.Модель содержит флаг, чтобы указать, какой режим.Представление считало бы флаг в модели, чтобы определить, какие элементы управления должны быть отображены / включены и т. Д. Контроллер также считал бы флаг в модели, чтобы определить, какой метод уровня обслуживания вызывать, когда пользователь отправляет форму (например, обновить или создать),

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

2 голосов
/ 31 января 2011

Обычно такого рода вещи организованы с использованием шаблонов на каком-то языке разметки («Представление» в MVC - часто с использованием HTML или XML).На самом деле я не очень разбираюсь в Qt, но, возможно, ваши классы ведут себя как шаблоны.

Возможно, у вас будет 3 шаблона:

  1. Добавить шаблон элемента
  2. Редактировать шаблон элемента
  3. Шаблон формы элемента

Шаблон формы будет импортирован где-то посередине шаблонов № 1 и № 2.

0 голосов
/ 31 января 2011

Я обычно только реализую диалог редактирования.Если вы хотите создать новый элемент, дайте ему новый элемент для редактирования.Все диалоги должны редактировать личные данные и возвращать их.Таким образом, клиенты могут правильно реагировать на OK / Cancel, и вам не нужно гадить, совершая кучу дерьма UNDO.

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