Design patterns 如何在没有硬编码的情况下测试代码中的动态元素集?
最好用一个例子来理解这个问题 我有一家医院,有三家主要的药店;中央药房、病房药房和私人套房 这些药店可以随意添加、删除和扩展。当我们谈论中心药房或病房药房时,如果没有硬编码id,我很想从我的代码中知道 有人能帮我解决这个问题吗 回答这个问题后,我将呈现一个不同的场景。提前谢谢大家 编辑#1Design patterns 如何在没有硬编码的情况下测试代码中的动态元素集?,design-patterns,language-agnostic,database-design,Design Patterns,Language Agnostic,Database Design,最好用一个例子来理解这个问题 我有一家医院,有三家主要的药店;中央药房、病房药房和私人套房 这些药店可以随意添加、删除和扩展。当我们谈论中心药房或病房药房时,如果没有硬编码id,我很想从我的代码中知道 有人能帮我解决这个问题吗 回答这个问题后,我将呈现一个不同的场景。提前谢谢大家 编辑#1 我认为会有某种表格设计和代码设计模式来实现这种灵活性。如果你没有硬编码id,你需要硬编码一些东西,你刚才说你的代码想知道它与中央药房一起工作,所以这里的逻辑中硬编码了一些东西 身份证这么差吗 您是否可以将行为
我认为会有某种表格设计和代码设计模式来实现这种灵活性。如果你没有硬编码id,你需要硬编码一些东西,你刚才说你的代码想知道它与中央药房一起工作,所以这里的逻辑中硬编码了一些东西 身份证这么差吗
您是否可以将行为标志存储在数据库中,这样,您就不用说
if(pharmacy.Name==“Central pharmary”)…
而是说if(pharmary.IsCentral)…
或类似的东西了?如果没有硬编码id,有两种方法:
- 将“药房类型”添加到“药房”表中。请注明是中心药房、病房药房还是私人套房
- 添加一个包含三行的不同表,一行包含中央药房及其id,第二行包含病房药房及其id,以此类推
请注意,在编码这种“单实例”约束时,您可能需要在更新前后查看表范围的锁或重新读取/重新检查。最终,拥有一个单一的不可删除的中心药房可能会简单得多。我最初的表格设计是
CREATE TABLE Hospitals (
HospitalID INTEGER PRIMARY KEY
, Name VARCHAR(16)
)
CREATE TABLE PharmacyTypes (
PharmacyTypeID INTEGER PRIMARY KEY
, Name VARCHAR(16)
)
CREATE TABLE Pharmacies (
PharmacyID INTEGER PRIMARY KEY
, HospitalID INTEGER FOREIGN KEY REFERENCES Hospitals (HospitalID)
, PharmacyTypeID INTEGER FOREIGN KEY REFERENCES PharmacyTypes (PharmacyTypeID)
, Name VARCHAR(16)
)
这允许添加非专利药店以及您提到的类型
在某个时间点,您必须以某种方式硬编码中央药房的PharmacyTypeID(et all)或其名称。我不确定这里是否有真正的问题。您似乎在询问如何设计数据库,然后描述数据库结构,然后询问如何以编程方式访问它。也许你可以尝试构建一个基本的测试程序,然后请人们帮助你评估实现同样目标的其他方法?我想我喜欢主要的药房类型结构。这是因为我可能有第二家医院在同一张表中存储了不同的结构。使用@Venema“Pharmacy Type”结构,我可以将不同的一组主要药房放在同一张表中,并使用完全不同的结构。根据我在这里得到的,在这个场景中,我应该定义一个更通用的主要药房类型列表,只是在它们具有相同特征的情况下。您有更好的解决方案吗?这类似于“用户配置文件”类型的解决方案。您可以向每个用户添加标志,也可以创建配置文件,以便共享该配置文件的所有用户只需链接到该配置文件即可。你只要选一个就行了。我个人可能会选择个人资料解决方案。我认为这是我正在寻找的解决方案(使用医院id)