药房销售来自不同生产商的药品。每种药都有名称,类型(抗生素,抗炎,胃),价格等。但是,进口药必须有来自当前国家实验室的证书。此外,如果客户购买进口药品,药房工作人员必须查询药品数据库,并查看国内生产商(通常更便宜)的对口药品数据。
我们如何开发一个班级结构来处理这家药房的医药数据?
答案 0 :(得分:0)
我发现Craig Larman的Applying UML and Patterns是一本非常好的书,可以学习设计,模式和实现。
如果你想要一个更快的解决方案,而不是阅读整本书,只需要原型:创建一些类,找出你的界面将是什么等等。尝试一些东西,看看哪些是最容易实现/维护的。
可能性:
您的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
}
}