c # — Объектно-ориентированные слои

Эй, ребята, я программировал ООП в течение семестра на C ++, и я только начинаю C #. Я до сих пор не до конца понимаю, как отделить слои друг от друга и что делает, что, где. Из того, что я понимаю, есть эти слои:

Хранилище -> Доступ к данным -> Бизнес-логика -> Командный процессор -> Пользовательский интерфейс

Теперь я не могу понять, ТОЧНО, какова ответственность каждого слоя ..

Я понимаю, что доступ к данным содержит только такие методы, как Add, Update, Delete, Query, и что Data Access не заботится о том, что он вставляет, он просто получает объект в качестве параметра и делает с ним что угодно. Создает ли Business Logic объект из данных, отправляемых из командного процессора, где командный процессор получил его из пользовательского интерфейса и выполнил проверку входных данных на нем?

Также, как бы я отправлял и получал разные команды, например, как команда Query будет сильно отличаться от команды вставки, так как она должна будет отправлять данные обратно …

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

Спасибо!

Редактировать.

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

У меня есть разные варианты запросов, один из которых тип. Поэтому мне нужно искать в родительском списке и возвращать данные каждого объекта, если указан его тип.
Мой родительский объект имеет перезаписанный ToString (), а также мои дочерние объекты, которые вызывают родительский ToString (), чтобы получить все данные объекта в одну строку. Я здесь занимаюсь бизнес-логикой? Также, когда я получаю список объектов, которые соответствуют моему типу, и пытаюсь выполнить итерацию, бросил это с помощью foreach, вызывающего ToString (), это только вызвало бы родительский ToString (), я предполагаю?

public string Lookup(Types type)
{
List<Parents> search = new List<Parent>();switch (type)
{
case Types.TypeOne:
{
search = ParentDataBase.FindAll( delegate(Child1 findChild) {
return findChild is ChildOne; } );

}
break;
case Types.TypeTwo:
{
search = ParentDataBase.FindAll( delegate(Parents findChild) {
return findChild is ChildTwo; } );
}
break;
case Types.TypeThree:
{
search = ParentDataBase.FindAll( delegate(Parent findChild) {
return findChild is ChildThree; } );
}
break;
}
string results = "";

foreach (Parent x in search)
{
results += t.ToString();
}
return results;
}

1

Решение

Стрелки, представленные в вопросе, сбивают с толку, поэтому во время обсуждения я их поменяю.

ТАК только позвольте мне поставить две ссылки, поэтому попробуйте поискать CRUD а также MVC Архитектура, когда они упоминаются.

Давайте сделаем один шаг за раз:

Хранение -> DataAccess

Это обычно обрабатывается ORM. ORM будет обрабатывать доступ к базе данных.

Созданные вами ORM плюс пользовательские (модельные) объекты позволяют рассеянный доступ к данным. Это будет выглядеть примерно так:

ORM переводит данные в базу данных и из нее, чтобы сделать ее пригодной для использования. ОРМ может справиться с CRUD операции для вас, чтобы запросы, обновления и вставки не присутствовали в других частях вашего кода.

Бизнес Логика

Бизнес-логика работает с данными, получая доступ, изменяя и сохраняя их.

Бизнес-логика может получить доступ к вашим моделям для обеспечения доступа и сохранения данных.

Модифицирующая часть реализована в бизнес-логике.

Бизнес-логика может быть маленькой, большой или комбинацией других бизнес-элементов.

Наш график теперь выглядит так:

База данных <- ORM -> Модели <- Бизнес Логика

Командный процессор

Командный процессор выполняет части бизнес-логики и соединяет части всей системы вместе и иногда называется контроллером в MVC

База данных <- ORM -> Модели <- Бизнес Логика <- Командный процессор

Пользовательский интерфейс

Пользовательский интерфейс (UI) можно разбить на две части: представление данных и ввод данных пользователем.

Представление данных называется представлениями в MCV и отвечает за сбор данных и их чтение пользователем.

Пользовательский ввод запускает части командного процессора.

В общем и целом:

                                                                ,-> View
Database <- ORM -> Models <- Business Logic <- Command Processor
`<- User Input
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector