Советы по выкройкам / дизайну - PullRequest
0 голосов
/ 29 января 2009

Я мог бы воспользоваться советом / помощью по программному обеспечению, которое я разработал.

Приложение представляет собой приложение в стиле мастера, где пользователи заполняют поля в каждой форме, прежде чем перейти к следующей форме или вернуться к предыдущей. Довольно простой.

Прямо сейчас меню вызывает frmWiz1 (InitialData), и когда frmWiz1 возвращается с DialogResult.OK, меню вызывает frmWiz2 (frmWiz1.Data) (не совсем точно, оно хранит все данные из каждой формы и передает эти ссылки в следующая форма). Каждый объект данных наследуется от интерфейса IPrintable, который определяет методы для самой печати, поэтому на последней странице мастера (предварительный просмотр / подпись печати) он добавляет каждый объект Data в пользовательский объект PrintDocument, который просто выполняет итерацию по объектам данных, вызывая их функции печати и управление нумерацией страниц и т. д.

Сначала я думал, что это хорошая идея, но теперь я думаю, что: - Форма меню обрабатывает слишком много логики потока. - Объекты данных (которые обрабатывают всю бизнес-логику, относящуюся к их конкретному набору данных) должны быть отделены от логики печати (потому что, как они есть сейчас, они находятся в пространстве имен печати - возможно, простое перемещение заставит меня задуматься) в покое).

Я не знаю. Я неплохо с языком, но я все еще новичок в дизайне.

Ответы [ 2 ]

2 голосов
/ 29 января 2009

Винтовые префиксы "frm"!

Что касается общего потока приложения, я бы рекомендовал использовать Application Controller или что-то в этом роде для централизации логики.

Что касается пользовательского интерфейса, каждый этап мастера должен представлять собой отдельный пользовательский элемент управления (без кнопок «Отмена», «Завершить», «Далее» или любых других), который помещается в корневую форму с помощью вышеупомянутых кнопок.

Ни один объект не должен отвечать за саму печать - для этого используйте IPrinterService .

1 голос
/ 29 января 2009

Несколько общих соображений:

  • Это отличный элемент управления Wizard. Мы используем его здесь на работе, и я должен сказать, что этот парень отлично с ним справился. Не уверен, что это может быть полезно для вас, но проверьте это

  • Выясните, что именно вам нужно знать об объекте, чтобы распечатать его. Попробуйте придумать методы и / или события, которые вам понадобятся для того, чтобы объект был «пригодным для печати». Поместите их в интерфейс, и ваши бизнес-объекты реализуют этот интерфейс. Затем пусть ваш класс помощника по печати будет иметь дело строго с интерфейсами.

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