2017-06-25 89 views
-2

药房销售来自不同生产者的药品。每种药物都有一个名称,类型(抗生素,消炎,胃),价格等。但是,进口药品必须有当前国家实验室的证书。此外,如果客户购买进口药品,药剂工人必须查询药品数据库并查看国内生产商的相关药品数据(通常较便宜)。我应该使用哪种设计模式,为什么?

我们如何建立一个类结构在这个药店处理医药数据库?

+1

列表绘制应用程序的UML所以你可以看到哪里是什么\ –

回答

0

我发现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 
    } 
} 
相关问题