C# 关于继承的一般问题
我正在为医生创建一个日志系统,医生可以进去看病人,也可以看病人的X光片和属于X光片的图像C# 关于继承的一般问题,c#,oop,inheritance,C#,Oop,Inheritance,我正在为医生创建一个日志系统,医生可以进去看病人,也可以看病人的X光片和属于X光片的图像 可以有多个患者 每个患者可以有多张X光片 每个X射线可以有多个X射线图像 以下是课堂布局: 我遇到的问题是,我似乎总是向患者询问信息,而不是患者.Xray或患者.Xray.XrayImage。这是正确的吗 例如: Patient有一个getPatient方法,该方法从数据库检索数据并设置Patient中的所有字段,目前为止效果良好 例如,我在数据库中有三张属于这个病人的X光片,我想创建3个patie
- 可以有多个患者
- 每个患者可以有多张X光片
- 每个X射线可以有多个X射线图像
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时对对象进行操作,而不是检索信息?您所讨论的问题是加载策略。基本上,我们必须在这里区分和快速加载(这些策略的名称在不同的来源中可能不同)。顾名思义,延迟加载只在实际使用时从数据库加载值。相反,当从数据库请求任何根对象时,立即加载已经从数据库加载了尽可能多或可能必要的数据 这与面向对象的设计或继承无关。您可以以一种方式设计对象,而无需更改它们,使用一种或另一种加载策略 您选择哪种加载策略取决于您的应用程序和通常面临的用例。它们中没有一个是正确的或更好的 例如,快速加载通常会导致用户在新页面加载开始时等待更长时间,但当他单击此页面上的某个内容时,响应立即出现。与延迟加载相反:使用这种方法,开始时的页面加载速度很快,但对于使用页面时的所有微小重新加载,必须执行新的数据库访问,因此用户在页面上的每个操作都有很短的等待时间。作为开发人员,您必须决定哪种方法可能对用户更方便。您还可以尝试这两种方法,让用户测试您的应用程序,并向您反馈哪种应用程序让他们感觉更舒服
在某些情况下,约束可能会迫使您采用一种或另一种策略。例如,当您处理数据库中的大型对象层次结构时,急切加载策略可能会导致很长的加载时间。我在现实世界的应用程序中看到加载时间超过1分钟。您很可能不需要所有获取的信息。在这种情况下,有必要使用延迟加载。“当下拉框值被更改时……它应该从……类而不是从数据库检索数据”是一种跳级的体系结构——当您试图设计应用程序时,这种方法是危险的(这就是这个潜在的离题问题所涉及的内容).我会同意你最后的想法。我不会去数据库做4次访问,我只会做一次访问,并带上与患者相关的所有信息。还有一点需要注意的是:你的标题与文章正文没有任何关系,因为问题正文中绝对没有继承权。这里看不到继承权。而且不需要它。而且不要很快优化。首先让它正常工作,你不会每分钟吸引成千上万的病人。完美的答案。我认为这与OOP有关,但我实际上在寻找的是我想要的是“急切加载”还是“惰性加载”。目前,我将使用“即时加载”,因为数据库中没有那么多数据,因此“即时加载时间”仍然非常快。再次感谢你的完美回答!