OOPデザインパターンについての質問はありません。これはオーバーアーキテクチャーですが、私は判断ではなく、推薦が必要です。 「ビジネス要件」によって指定されたクラス階層があるとします。したがって、Pizza : Freight
、Flowers : Freight
、およびTonOfBricks : Freight
の深いバージョンがあり、IDispatchService<F> where F : Freight
とIDeliveryService<F> where F : Freight
が得られました。将来のAPIから切り離す - 依存関係注入の必要性を最初に発見する
異なるIDeliveryService
の実装では、貨物に関するさまざまな情報が必要であるとします。彼らが望むものはあなたのクラス階層と平行しておらず、どの種類の小包について1か月にどの配送サービス(すなわちAPI)を使用するのか分からない。さらに、1本のピザを真空管で送るのに十分な情報があるかもしれませんが、次のものではないかもしれません。
これで、あなたはピザをローラーブレードで手渡す人を雇うこともできることに気づきましたが、この方法で配送されるすべての物の重心を指定する必要があります。そうしないと、保険があなたを殺します。 IDeliveryService<Pizza>
として実装していますか?新しいインターフェイスIHasCenterOfMass
を追加していて、おそらくIDeliveryService<IHasCenterOfMass>
として実装していますか?もしそうなら、ディスパッチャーはどのようにそれを気に入っていますか?重心のデータベースに関係を追加していますか?
ありがとうございます - それは私がどこに向かうのかですが、XXXDeliveryInformationのインスタンスはどこに置くのですか? –
@ nik.shornikov - 私はあなたの質問を理解している場合は、論理的にあなたが運命のサービスに情報のインスタンスを保存するかわからない。情報インスタンスを作成する場所は、根本的な問題がある場所です。各サービスは情報オブジェクトを必要とするため、抽象的な方法でそれらのサービスを作成する必要がある時点まで問題が発生します。この場合、各貨物のcenterOfMassを決定するのに十分なほどスマートな工場が必要です。それは難しいことがあります。 – Polity
ありがとうございます。あなたは、私が求めていたもの、つまりコンストラクターのコンテキスト(つまり、どこから来ている "deliveryinfo"引数があるか)について答えました。 –