2

現在、アプリケーションで複数のレイヤーの構成を扱っています。データベースからデータを読み取り、ProductLocationsそれらをオブジェクトに入れSolverます。別のクエリSalesActivitiesでは、正しいオブジェクトの奥深くにあるオブジェクトに配置する必要がある製品の場所に接続された複数を読み取りProductLocationます。次のコードのように、チェーンされAddSalesActivityたメソッドになります。

何年にもわたって、私が取り組んできた多くのアプリケーションでこの種の構造を見てきました。時にはより長いチェーンでも。今日それについて考えていたのですが、これは微妙な繰り返しのようなにおいがします。これを処理する別の方法に関するアイデアはありますか? より良いデザインを思いつく方法はありますか?

class Solver{
    List<ProductLocation> productLocations;
    public void ImportSalesActivities{
        //foreach sales activity read find the correct productLocation
        //Call productLocation.AddSalesActivity)
    }
}

class ProductLocation{
    Forecaster forecaster;
    public void AddSalesActivity(SalesActivity activity){
        forecaster.AddSalesActivity(activity);
    }
}

class Forecaster{
    SalesActivityResolver resolver;
    public void AddSalesActivity(SalesActivity activity){
        resolver.AddSalesActivity(activity);
    }
}

class SalesActivityResolver{
    List<SalesActivity> resolvedActivities;
    public AddSalesActivity(activity){
        //update resolved activities based on complicated criteria.
    }
}
4

1 に答える 1

1

ProductLocationここで説明した方法では、クラスとクラスを切り取ることができますForecasterが、ここに示されていない他のことを行うため、削除できないと思います。これらのオブジェクトとクラスのセマンティクスをよりよく理解することなしに、これ以上あなたを助けることはできません. 私の一般的なアドバイスは、アプリケーションのUML-Object-Diagramを単純なシナリオ (オブジェクトが多すぎない) で作成するように試みることです。これは、パターンを発見し、オブジェクトの役割をよりよく理解するのに役立ちます。

于 2010-04-13T18:29:16.877 に答える