Как правильно подходить к объединению информации от отдельных компонентов в многоуровневом программном обеспечении? - PullRequest
0 голосов
/ 11 ноября 2018

В Интернете много информации о разработке многоуровневого программного обеспечения, но я не смог найти ответ на распространенную проблему: собирать ли мне информацию из отдельных компонентов (или объектов), получая доступ к одноуровневым компонентам или компонентам из уровня ниже?

Предположим, у меня есть следующий сценарий:

Бизнес-уровень: ConsumerBO, OrdersBO, MessagesBO ... Уровень данных: ConsumerDAO, OrdersDAO, MessagesDAO ...

Связь между ConsumerBO x ConsumerDAO, OrdersBO x OrdersDAO и т. Д. Ясна. Но если мне когда-нибудь понадобится написать метод для ConsumersBO, который агрегирует информацию из ConsumersDAO, OrdersDAO и MessagesDAO, я должен сделать это, сделав ConsumersBO методы доступа из его братьев и сестер (например: OrderBO и MessagesBO) ИЛИ из компонентов на слое ниже (например: OrdersDAO, MessagesDAO)? Почему?

[редактировать] переписать этот вопрос из-за отрицательных голосов ..

1 Ответ

0 голосов
/ 11 ноября 2018

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

Обратите внимание, что бизнес-уровень никогда не должен напрямую зависеть от уровня данных, поскольку первый является более абстрактным, чем последний. Часто мы позволяем бизнес-классам зависеть от интерфейсов, которые реализуются классами на уровне данных. Например, CustomerBO будет использовать интерфейс ICustomerDAO, принадлежащий бизнес-уровню, а не конкретный класс CustomerDAO, принадлежащий уровню данных.

...