1

S3 または Web サーバーのハード ドライブにファイルを保存できるように、アプリケーションのファイル ストレージ部分をある程度柔軟に設計したいと考えています。

また、これをユーザーごとに柔軟にしたいので、ユーザー設定で、ファイルを S3 に保存するか、サーバーのファイル システムに保存するかを選択できます。

私はこのようなことを考えています:

IFileStorage fs = FileStorageFactory.Instance(userSettings);

次に、次のようなメソッドがあります。

public static IFileStorage Instance(UserSettings setting)
{
     if(setting == UserSettings.S3)
         return new S3FileStorage();
}

これは理にかなっていますか?(私は ac# プログラマですが、これは Java で行います)

私はSpringを使っていますが、ユーザーごとに実装が変わるので、ここではDIは使わないと思います。

4

2 に答える 2

2

Factory と Dependency Injection は相互に排他的ではありません。春には、豆を生産するいわゆる工場方式があります。factory-method には引数を渡すことができ、それは静的または非静的のいずれかです。

于 2010-02-27T19:34:28.100 に答える
1

はい。それは適切なようです。クラスの特定のインスタンスをユーザーに返すので、プログラムの途中で要件が変更されない限り、ファクトリが適切です (そうでない場合は、戦略パターンをお勧めします) 。

于 2010-02-27T19:22:07.533 に答える