Я разработал многоуровневое решение и создал несколько классов Manager для реализации бизнес-логики. Все менеджеры являются производными от класса BaseManager
. Чтобы было понятнее, вот класс UserManager
:
public class UserManager : BaseManager
{
public void Add(User user)
{
...
}
public void Update(User user)
{
...
}
public void Delete(User user)
{
...
}
public bool GetAccessPermissions(User user)
{
...
}
}
BaseManager
выглядит следующим образом:
public class BaseManager
{
protected IRepository repository = IoCLocator.Resolve<IRepository>();
public BaseManager()
{
...
}
// Some shared methods among manager classes.
}
Теперь я скептически отношусь к тому, чтобы все мои классы менеджеров были определены статически, поскольку они получают свои связанные объекты, с которыми они хотят работать, в качестве параметров. Но, как вы видите, у меня есть несколько общих частных/защищенных членов, которые я должен создавать при каждом вызове. (например, repository
должен создаваться при создании каждого класса менеджера).
Каков мой выбор, чтобы определить классы менеджеров как статические и по-прежнему создавать экземпляры защищенных членов при каждом вызове методов менеджеров?