-2
藥房銷售來自不同生產者的藥品。每種藥物都有一個名稱,類型(抗生素,消炎,胃),價格等。但是,進口藥品必須有當前國家實驗室的證書。此外,如果客戶購買進口藥品,藥劑工人必須查詢藥品數據庫並查看國內生產商的相關藥品數據(通常較便宜)。我應該使用哪種設計模式,爲什麼?
我們如何建立一個類結構在這個藥店處理醫藥數據庫?
藥房銷售來自不同生產者的藥品。每種藥物都有一個名稱,類型(抗生素,消炎,胃),價格等。但是,進口藥品必須有當前國家實驗室的證書。此外,如果客戶購買進口藥品,藥劑工人必須查詢藥品數據庫並查看國內生產商的相關藥品數據(通常較便宜)。我應該使用哪種設計模式,爲什麼?
我們如何建立一個類結構在這個藥店處理醫藥數據庫?
我發現Applying UML and Patterns由Craig Larman與一本很好的書,瞭解設計,模式和實現。
如果您想要一個更快的解決方案而不是閱讀整本書,只需創建一些類:創建一些類,找出您的接口將會是什麼等。嘗試一些東西,看看最容易實現/維護什麼。您有ProductService
有一個FindCounterpartMedicines()
。如果在你的問題中描述的情況下是唯一的特例,它可以只是一個簡單的if
來實現:不要複雜的事情,如果它不是必要的,但「做能夠工作最簡單的事」(link)。
if (medicine.IsImported) {
result.CounterPartMedicines = FindCounterpartMedicines(medicine);
}
如果每個藥都有一些不同的特殊邏輯,你可以使用多態,避免
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
}
}
列表繪製應用程序的UML所以你可以看到哪裏是什麼\ –