Написание библиотеки классов Data Facade и включение ее в уровень доступа к данным

Я пишу простое приложение для отображения данных, которое имеет уровень представления пользовательского интерфейса, уровень доступа к данным и общий уровень, который включает в себя наборы данных. Поскольку это приложение будет относительно легким (без записи/обновления данных), я решил, что будет проще использовать шаблон фасада данных вместо написания уровня бизнес-логики.

Вопрос: я следил за этой статьей о фасадах: http://msdn.microsoft.com/en-us/library/orm-9780596527730-01-04.aspx, а на рис. 4.5 фасад написан в той же библиотеке, что и подсистемы (что в моем случае быть адаптерами данных). Вы бы предпочли этот подход вместо написания новой библиотеки классов C# для фасада данных целиком?

В моем пользовательском интерфейсе я использую фасад данных следующим образом:

public partial class MyDataApp : Form
{
    DataFacade ApplicationDataFacade = new DataFacade();
}

person discofighter411    schedule 29.04.2013    source источник


Ответы (1)


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

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

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

person RaulMonteroc    schedule 29.04.2013
comment
Фасад данных Я пишу дома (без каламбура) несколько адаптеров данных, которые соответствуют различным базам данных. У него есть методы, которые возвращают заполненные таблицы данных, например, представление сетки в пользовательском интерфейсе. - person discofighter411; 29.04.2013
comment
в этом случае, если единственное, что вы делаете, это получение данных из базы данных, вам не требуется использовать бизнес-логику. Но оцените, нужно ли фильтровать и проверять эти данные, и в этом случае бизнес-логика может пригодиться. - person RaulMonteroc; 29.04.2013