На работе мы используем «шаблон», который я действительно не нашел в книге GoF (но это может быть из-за отсутствия компетентности в этом вопросе, я просто просмотрел шаблоны) и что я все еще сомневаюсь ,Какая картина это («Провайдер»)?
Скажем, если у нас есть многопроектное решение, содержащее проект DataAccess, который управляет доступом к данным. Затем, как правило, я вижу, имеющий структуру, как это:
Providers (Folder)
- DataAccessProvider.cs
Interfaces (Folder)
- IFileLoader.cs
Implementors (Folder)
- FileLoader.cs
Здесь FileLoader
бы internal
реализация интерфейса IFileLoader
, и провайдер выглядит следующим образом:
public static class DataAccessProvider
{
public static IFileLoader FileLoader
{
get { return new FileLoader(); }
}
}
Какой шаблон проектирования это (если есть), и каковы его реальные возможности, помимо маскировки конкретной реализации интерфейса IFileLoader
?
А во-вторых, это действительно «хороший стиль»? Интересно, например, что произойдет, если есть много звонков, как
string content = DataAccessProvider.FileLoader.LoadContentFromFile("abc.txt");
Этот вызов будет new FileLoader()
всякий раз, когда он используется. Разве нет более элегантного способа сделать подобный подход?
очень похож на специализированный сервисный локатор. И ServiceLocator - это антипаттерн. – Firo