У меня есть уровень доступа к данным, который абстрагирует остальную часть приложения от технологии персистентности. Прямо сейчас реализация является сервером SQL, но это могло бы измениться. Во всяком случае, я считаю, что этот основной класс доступа к данным становится все больше и больше по мере роста моих таблиц (сейчас около 40 таблиц). Интерфейс этого уровня доступа к данным - это любой вопрос, который вы можете получить на
public interface IOrderRepository
{
Customer[] GetCustomerForOrder(int orderID);
Order[] GetCustomerOrders(int customerID);
Product[] GetProductList(int orderID);
Order[] GetallCustomersOrders(int customerID);
etc . . .
}
реализация этого базового хранимого проца SQL, выполняющего соответствующие запросы и возвращающего результаты в типизированных коллекциях
это будет расти и расти. Его довольно легко обслуживать, так как нет единой ответственности, но теперь класс содержит более 2000 строк кода.
Таким образом, вопрос в том, что размер класса (и отсутствие реальной концептуальной связи) должен быть разбит, и если да, то в каком измерении или уровне абстракции.