Как правильно спроектировать слой доступа к данным?

У меня есть следующий уровень доступа к данным (DAL). Мне было интересно, правильно ли он настроен или мне нужно его улучшить?

public class User 
{

}

//Persistence methods
static class UserDataAccess
{
   UsersDAL udal = // Choose SQL or FileSystem DAL impl.


   InsertUser(User u)
   {
      // Custom logic , is 'u' valid etc. 

      udal.Insert(u);
   }
}

abstract class UsersDAL
{    
   GetUserByID();
   InsertUser(u);
   ...
}

// implementaitons of DAL

static class UsersSQLStore : UsersDAL
{

}

static class UsersFileSystemStore : UsersDAL
{

}

Я отделил слой хранения от класса User, чтобы получить доступ к коллекции методов, которая в дальнейшем вызывает любой пользовательский DAL.

Правильно ли использовать static в реализации DAL?

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

8
задан Adam Rackis 6 January 2011 в 20:47
поделиться