我想以一定的灵 active 设计我的应用程序的文件存储部分,以便可以将文件存储在 S3 或 Web 服务器的硬盘驱动器上。
我还希望这在每个用户的基础上是灵活的,因此在他们的用户设置中,他们可以选择是希望将文件存储在 S3 中还是服务器文件系统中。
我在想这样的事情:
IFileStorage fs = FileStorageFactory.Instance(userSettings);
然后我会有一个看起来像这样的方法:
public static IFileStorage Instance(UserSettings setting)
{
if(setting == UserSettings.S3)
return new S3FileStorage();
}
这有意义吗? (我是一名 C# 程序员,但我将使用 Java 进行此操作)
我正在使用 Spring,但我认为这里不会使用 DI,因为实现会根据每个用户而变化。
最佳答案
工厂和依赖注入(inject)并不相互排斥。 Spring 有所谓factory-method生产 bean 类。您可以将参数传递给工厂方法,它可以是静态的或非静态的。
关于java - 这是工厂模式的完美问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348580/