私は小売業者のためのシステムを設計しているシナリオを持っています。これは適切なライブアプリケーションではなく、私のオブジェクト指向設計スキルが正しいか、正しく考えているかどうかを確認するシナリオです。私はまだここで学んでいます。私はC#でこれをやっています。私のOOPデザインは正しいですか?
シナリオはこれです:
静止製品を販売する小売業者が納入業者の彼の各種固定数から最適な価格を選択して、そのサプライヤーから順を行いますシステムを設計したいと考えています。わかりやすくするために、私は静止している製品を同じ会社の1つの製品(XYZペン)に切断しました。サプライヤのそれぞれは、尋ねられたときにXYZペンの見積もりを提供し、小売業者システムは様々な売り手から最良の価格を選択し、その売り手から注文する。
アプローチ1:
- サプライヤーと各サプライヤの実装のための抽象クラスを作成します。
- 各サプライヤの実装にはPlaceOrder()メソッドとコストプロパティがあります。
- DataLayerは、各サプライヤ実装のコストプロパティを設定します。
- 各実装を最適な価格で評価し、適切な実装を注文するCheckBestRetailerクラスを作成します。
アプローチ2:
- コストプロパティとPlaceOrder()メソッドを持つタイプのサプライヤーのリストを作成します。
- 各サプライヤに対して、データレイヤは新しいサプライヤタイプをリストに追加し、データベースから取得したコストの詳細を設定します。
- CheckBestRetailerクラスはそのリストをループし、各オブジェクトを最良の価格で評価し、適切な実装を注文します。
上記の2つのうち、私はアプローチ1がOOPに近いと感じていますが、私には固定数のサプライヤがあると思います。データベースから取り出されたデータに応じてサプライヤの数が変わる可能性がある場合は、アプローチ2がより優れています。
あなたはどう思いますか?
ここで私のOOADをテストするのに最適なシナリオがないかもしれません。設計上のヒントがあれば可能な限り私が一緒に作業することができるサンプルシナリオをいくつか用意したいと思います。
お時間をいただきありがとうございます。
あなたはそれに私を打つ気:)私は割引を提供するいくつかのサプライヤーのような新しい複雑さを紹介し、他の人がしないとどう –
。その後、どちらがより優れていますか? – user20358
デコレータを使用して特定のクラスに多くの動作を追加することができます。多くのオプションがあります。現在、どの問題を解決する必要があるかによって異なります。割引はすべてのサプライヤに適用される可能性があります。オプション2と単一の場合..あなたがそれらが起こるだろうと知っているまで、あなたのデザインは将来の要件について考えることを複雑にしようとしないでください。 –