薬局は異なる生産者から薬を販売しています。各薬には名前、種類(抗生物質、抗炎症、胃)、価格などがありますが、輸入医薬品は現在の国の研究室の証明書が必要です。さらに、顧客が輸入された薬を購入する場合、薬局の担当者は薬のデータベースを照会し、国内の生産者(通常は安価)から相手の薬に関するデータを見る必要があります。私はどのデザインパターンを使用すべきですか?その理由は何ですか?
この薬局で薬のデータを扱うためのクラス構造をどのように作成しますか?
薬局は異なる生産者から薬を販売しています。各薬には名前、種類(抗生物質、抗炎症、胃)、価格などがありますが、輸入医薬品は現在の国の研究室の証明書が必要です。さらに、顧客が輸入された薬を購入する場合、薬局の担当者は薬のデータベースを照会し、国内の生産者(通常は安価)から相手の薬に関するデータを見る必要があります。私はどのデザインパターンを使用すべきですか?その理由は何ですか?
この薬局で薬のデータを扱うためのクラス構造をどのように作成しますか?
私は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
}
}
のリストを避けるために、多型を使用することができますどこに何が\ –