2

私はカスタムオブジェクトを持っていますExportType:

public class ExportType{

    protected String name;      
    protected FetchingStrategy fetchStg;
    protected ExportStrategy exportStg;

    public ExportType(String name, FetchingStrategy fetch, ExportStrategy export) {
            this.name = name;
        this.fetchStg = fetch;
        this.exportStg = export;
    }

    // ...
}

私のアプリケーションでは、 と が異なるエクスポート タイプのリストを作成する必要がFetchingStrategyありExportStrategyます。newFetchingStrategyとを実装することで、将来的に新しいエクスポート タイプを作成できるExportStrategyため、アプリケーションをできるだけ柔軟に設計したいと考えています。

必要なものを得るために適用すべき設計パターンはありますか? TypeFactory特定のインスタンスごとに異なるものを作成するExportTypeのが正しいアプローチですか?

アップデート

問題を要約しようとしています。データベースからデータをエクスポートするための Web アプリケーションに取り組んでいます。DB からデータを抽出する方法はいくつかあります。これらのタイプは、とExportTypeのさまざまな組み合わせによって取得されます。次に、これらの「組み合わせ」のリストを作成して、必要に応じて思い出せるようにする必要があります。次のような定数を作成できます。FetchingStrategyExportStrategy

public static final ExportType TYPE_1 = new ExportType(..., ...);

しかし、将来新しい組み合わせ/タイプを追加できるように実装したいと思います。

4

3 に答える 3

1

このための最適なデザインパターンは、すべてのインターフェイスを返すファクトリを使用することです。その後、すべての実装を抽象化して、システムを柔軟に拡張および変更できます。

春の依存性注入は、このための非常に優れたソリューションです

最大の問題はデータベースレベルにある可能性が高く、抽象化が困難です

于 2012-06-21T13:45:12.807 に答える
0

できるだけ柔軟にするために、具象クラスは使用しないでください。インターフェイスを使用します。

Spring IoCを使用して、ExportType内にFetchingStrategyとExportStrategyの異なる実装を注入することをお勧めします。

public class SomeExportType implements IExportType{

    protected String name;
    @Autowired(@Qualifier="SomeFetchingStrategy")      
    protected IFetchingStrategy fetchStg;
    @Autowired(@Qualifier="SomeExportStrategy")      
    protected IExportStrategy exportStg;



    // ...
}

public interface IExportType {
     public void doSomething();  //
}

public interface IFetchingStrategy {
   public void fetch();
}

public class SomeFetchingStrategy implements IFetchingStrategy {

    public void fetch() {
        //implement this strategy
    }

}
于 2012-06-21T14:01:15.490 に答える
0

AbstractFactory を使用できます: http://en.wikipedia.org/wiki/Abstract_factory_pattern

これらの使用を計画している方法の詳細が役立つ場合があります。

于 2012-06-21T13:47:03.153 に答える