Фабричный шаблон, возвращающий объекты, которые требуют других объектов, которые уже созданы - PullRequest
2 голосов
/ 12 ноября 2011

Как мне справиться с ситуацией, когда мой конкретный объект, который будет возвращать мой заводской объект, зависит от уже созданного другого объекта.

Для того, чтобы мой репозиторий работал, мне нужно иметь экземпляр объекта подключения.Я не хочу создавать новый объект подключения каждый раз, когда вызывается хранилище.Как мне справиться с этой ситуацией?Передать ли объект подключения в RepositoryFactory?

IRepository<User> userRepository = RepositoryFactory.GetRepository("user");

 public class UserRepository : IRepository<User>
 {
    public DbConnection Connection { get; set; }

    public UserRepository(DbConnection connection)
    {
        this.Connection = connection;
    }
 }

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

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

0 голосов
/ 12 ноября 2011

В MEF вы бы поместили свойство на ваш фабричный объект, который импортирует объект соединения.Затем фабричный объект может предоставить этот объект соединения в качестве параметра конструктора для создаваемых им экземпляров.

Объект соединения может быть создан композицией MEF или может быть предоставлен контейнером композиции (переданным в качестве параметра в контейнер.ComposeParts).

...