2017-06-25 4 views
-2

薬局は異なる生産者から薬を販売しています。各薬には名前、種類(抗生物質、抗炎症、胃)、価格などがありますが、輸入医薬品は現在の国の研究室の証明書が必要です。さらに、顧客が輸入された薬を購入する場合、薬局の担当者は薬のデータベースを照会し、国内の生産者(通常は安価)から相手の薬に関するデータを見る必要があります。私はどのデザインパターンを使用すべきですか?その理由は何ですか?

この薬局で薬のデータを扱うためのクラス構造をどのように作成しますか?

+1

のリストを避けるために、多型を使用することができますどこに何が\ –

答えて

0

私はApplying UML and PatternsがCraig Larmanによって設計、パターン、実装について学ぶ非常に良い本を見つけました。

書籍全体を読むのではなく、より迅速な解決策を望むなら、プロトタイプを作成するだけです。いくつかのクラスを作成し、インターフェースがどのようなものかを理解します。実装/保守が最も簡単なものを試してみてください。

可能性:
ProductServiceは、FindCounterpartMedicines()です。あなたの質問に記載されているケースが唯一の特別なケースである場合は、簡単なifで実現することができます。必要ない場合は「」(link)の作業が最も簡単です。

if (medicine.IsImported) { 
    result.CounterPartMedicines = FindCounterpartMedicines(medicine); 
} 

それぞれの薬は、いくつかの異なる特別なロジックを持っている場合、あなたはあなたが見ることができるように、アプリケーションのUMLを描き

if (medicine.SomeProp) doSomePropLogic(); 
if (medicine.SomeOtherProp) doSomeOtherPropLogic(); 

継承の例

interface Medicine { 
    BeforeBuyLogic(); 
} 

class Antibiotics : Medicine { 
    BeforeBuyLogic() { 
     // check doctor subscription 
    } 
} 

class StomachMed : Medicine { 
    BeforeBuyLogic() { 
     // check customer allergies 
    } 
} 
関連する問題