这对工厂模式来说是一个完美的问题吗?

时间:2010-02-27 19:13:15

标签: java spring factory-pattern

我想以一定的灵活性设计应用程序的文件存储部分,因此可以将文件存储在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会在这里使用,因为实现会根据每个用户进行更改。

2 个答案:

答案 0 :(得分:2)

工厂和依赖注入不是互斥的。 Spring有所谓的factory-method生产豆类。您可以将参数传递给factory-method,它可以是静态的也可以是非静态的。

答案 1 :(得分:1)

是。这似乎是合适的。您正在向用户返回类的特定实例,因此只要他们的要求在程序中途没有变化,那么工厂是合适的(否则我建议{{ 3}}模式)