我正在为医生创建一个日志系统,医生可以在其中查看患者并查看患者的 X 射线和属于该 X 射线的图像。
- 可以有不止一名患者。
- 每位患者可以有不止一张 X 光片。
- 每个 X 射线可以有多个 XrayImage。
这是班级布局:
http://i44.tinypic.com/w9w37d.png
我遇到的问题是,我似乎总是向患者询问信息,而不是 Patient.Xray 或 Patient.Xray.XrayImage。这个对吗?
例如:
Patient 有一个 getPatient 方法,它从数据库中检索数据并设置 Patient 中的所有字段,到目前为止一切顺利。
然后,例如,我在数据库中有三个属于该患者的 X 射线,我想创建 3 个 Patient.Xray 实例,因此我在 Patient 中有一个名为 getXrayIDs 的方法。这将检索属于该患者的所有 XrayID,并将 ID 存储在 Patient 的列表中,这些 ID 显示在 UI 中的下拉框中。当我在下拉框中更改 ID 时,会调用另一个名为 Patient.getXray(int XrayID) 的方法,这会创建一个新的 Xray 实例,并且信息会显示在 UI 中。
XrayImages 的工作原理几乎相同,只是 Xray 有一个名为 getXrayImageIDs 的方法。
问题是我想处理一个类对象(Patient、Xray、XrayImage),但同时我不想从数据库中检索到不必要的数据,所以这是一个好方法吗?
感觉就像我没有以正确的 OOP 编程,我应该忽略我从数据库中检索到的数据量,以正确的 OOP 编程,然后修复数据库性能。
所以我应该这样编程:
Patient patient = new Patient()
patient.getXrays() // This one should create a new Xray instance
// and Patient should have references to these instances.
patient.xray[i].getXrayImages // This one should create a new XrayImage
//instance and Xray should have references to these instances.
另一个想法:当下拉框的值被更改时(如本例所示),它应该从 Xray 和 XrayImage 类中检索数据,而不是从数据库中检索数据。我是否应该尝试一次将数据库中的数据加载到 Xray 和 XrayImage 类中,然后用户将获得信息并将针对对象工作,而不是每次更改 XrayID 时都检索信息?