У меня есть два класса, закодированных для одного интерфейса. Один и тот же метод StoreData (данные) - один класс отправляет данные в веб-службу, которая записывает в БД, а другая записывает данные непосредственно в DB. (заводская модель)Factory pattern: Передача аргументов конкретному классу
public IStore GetStorageClass(StorageType type)
{
if (type == StorageType.WebService)
return new WebService();
else
return new DatabaseStore();
}
Теперь для класса DatabaseStore требуется строка подключения. Вопрос в том, чья ответственность заключается в том, чтобы предоставить строку подключения в DatabaseStore и как? Я подумал:
Завод просто знает строку подключения для передачи DatabaseStore
Конструктор DatabaseStore считывает его из конфигурации, который предоставил конечному пользователю.
Вызывающего GetStorageClass, хотя и не знает о точном выполнении, передает Словарь параметров и значений, где параметр является строкой соединения (абонент знает, работающий с базами данных требуется подключение строк)
Какого варианта должен ли я выбрать, и я правильно использую шаблон Factory здесь? Цените помощь!
Спасибо, Кевин. Итак, в этом случае класс FactoryProvider (содержащий GetCtorageClass) будет «директором» и создаст экземпляр создателя базы данных для создания DatabaseStore? Тем не менее, конфигурация (строка подключения) для строителя в конечном счете должна быть предоставлена FactoryProvider, правильно? –
Рассмотрите это следующим образом: Вот конструктор для FactoryProvider FactoryProvider (DatabaseStoreBuilder dsb) {this.dataStoreBuilder = dsb; } Теперь, в GetStorageClass, ваш случай для DatabaseStore - this.dataStoreBuilder.InitializeDataStore(); Класс DatabaseStoreBuilder, который вы передали, был построен с использованием строки подключения. FactoryProvider не нужно строить сам строитель. – Kevin