Я хочу спроектировать часть хранилища файлов моего приложения с некоторой гибкостью, чтобы можно было хранить файлы либо на S3, либо на жестком диске веб-сервера.
Я также хочу, чтобы это было гибко для каждого пользователя, поэтому в своих пользовательских настройках они могут выбирать, хотят ли они сохранять свои файлы в S3 или в файловой системе серверов.
Я думаю о чем-то вроде этого:
IFileStorage fs = FileStorageFactory.Instance(userSettings);
Тогда у меня будет метод, который выглядит следующим образом:
public static IFileStorage Instance(UserSettings setting)
{
if(setting == UserSettings.S3)
return new S3FileStorage();
}
Имеет ли это смысл? (Я программист на C #, но я буду делать это на Java)
Я использую Spring, но я не думаю, что здесь будет использоваться DI, поскольку реализация меняется для каждого пользователя.