Где я могу создать свои объекты в приложении CRUD n-Tiered WinForm? - PullRequest
1 голос
/ 28 апреля 2009

Скажем, у меня есть приложение WinForm CRUD (как). Я хочу следовать передовому опыту в этом вопросе, поэтому я стараюсь, чтобы он следовал ООП и n-Tiered.

К сожалению, я знаком со словами, но не с их практикой. Итак, давайте рассмотрим следующий пример: Моя программа CaseNote. У меня есть приложение с вкладками, где вы переходите на вкладку поиска, чтобы найти члена, а затем один из вариантов - перейти на вкладку CaseNote, чтобы создать новую заметку к делу, просмотреть существующие CaseNotes или создать последующую CaseNote для родителя. Заметка. Все это для участника, выбранного на вкладке поиска.

Так что, если я создаю объекты и раздаю их для использования различными формами, где я должен их создавать? Я думал, что у меня будет 3 слоя; Пользовательский интерфейс, Объект, DAL. Там, где я падаю, я показываю объекты. Я не могу скопировать их в объектный слой, не так ли? Кроме того, если я приведу их в форму, как передать их из формы в довольно большое приложение?

Снимок экрана CaseNotes

Ответы [ 2 ]

2 голосов
/ 28 апреля 2009

Если вы хотите взглянуть еще на несколько слов об этой проблеме, вы должны взглянуть на MVP и MVC. (Это расшифровывается как Model View Controller и Model View Presenter). Некоторые люди застрелят меня за эти слова, но они очень похожи по своей концепции.

Цель MVP и MVC - позволить вам разрабатывать логику приложения, даже не задумываясь о внешнем виде приложения. Это также позволяет вам определять ваши взаимодействия с пользователем без реализации реального GUI. По сути, ваша модель - это логика вашего приложения, ваши данные, ваши классы, которые на самом деле делают что-то вроде общения с вашей базой данных. Ваш докладчик или контролер - это то, что взаимодействует с вашей моделью, и что контролирует ваш пользовательский интерфейс и реагирует на действия пользователя в интерфейсе. Наконец, ваш вид - это ваш дизайн winforms или веб-страница.

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

Первое, что вам нужно сделать, это начать создавать ваши объекты, которые представляют ваши данные. Таким образом, у вас будет объект CaseNote, который содержит данные casenote. У вас будет какой-то контейнер данных заметки о деле, например база данных заметок о деле. Вы можете определить логические операции и их свойства, как если бы они были реальными элементами.

Затем вы перейдете к определению вашего докладчика или контроллера, который определит операции, которые вы хотите поддерживать из графического интерфейса. В то же время вы должны определить интерфейс, который будет определять для докладчика / контроллера, какие операции могут выполняться в графическом интерфейсе. Так, например, ваш докладчик может предоставить метод с именем SearchForCaseNote, который принимает строковый параметр. Интерфейс вашего представления предоставит метод с именем DisplayCaseNote. Когда пользователь нажимает кнопку поиска, представление передается через команду докладчику, который затем вызывает модель для получения данных. На этом этапе докладчик может отформатировать данные, то есть преобразовать объект DateTime в строку, а затем передать данные обратно в представление через метод определения интерфейса, который называется DisplayCaseNote.

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

И последнее, что мне нужно упомянуть, это то, где вы создаете эти различные части вашего приложения. На мой взгляд, все, что должно выпасть из докладчика / контроллера. Поэтому, когда ваше приложение запускается, оно создает объект презентатора / контроллера, который затем создает и отображает ваше представление, передавая себя как переменную представлению. Затем презентатор / контроллер может либо создать исходные модели, загрузив их с диска, либо в идеале обнаружить их через контейнер внедрения зависимостей, например, единицу. На самом деле, использование единства для обнаружения реализации представления, вероятно, снова является лучшей идеей, поскольку дает вам истинное разделение между представлением и докладчиком / контроллером. Когда вы переходите к другому представлению (то есть открываете другое окно), ваш докладчик / контроллер должен предоставлять метод, такой как DisplayDetailPage, который представление вызывает при нажатии кнопки. Это создаст презентатор / контроллер для следующего представления, которое, в свою очередь, создаст представление и получит ссылку на модель.

Надеюсь, это поможет.

0 голосов
/ 08 февраля 2011

Я думаю, вы должны использовать R ocketFramework

...