我目前正在实施与医院内部网站类似的内容,医生可以在其中查看有关患者的信息。
目前,我有很多关于每位客户的信息:他的全名,出生日期,血型,他住的地方,他患有的疾病等等。
我的第一次尝试是某种形式:
class Client {
private string fullName;
private Date dateOfBirth;
...
public Get/Set FullName()
public Get/Set DateOfBirth()
...
}
基本上将所有内容放在同一个类下。
过了一会儿,我决定将类似的概念拼凑成一个更普遍的概念。例如,我可以将userName
和password
封装到同一个概念中 - 例如LoginInfo
。
Client
类以外的代码是否应该知道在其中使用的不同类型的概念?我仍然不太了解我需要在Client
课上使用哪些方法。也许如果有很多,那么使用小的内部概念来组织类似的方法本身就是一个好主意,而不是拥有这样一个松散耦合的大类。
Client
的数据将全部使用标准数据库保留,如果这有任何区别的话。
答案 0 :(得分:1)
我想说将相关的数据包装到公共类中是有用的。我只会在Client
中为非常常用的属性提供委派的getter / setter(如果是这样的话 - 它应该是个案决策)。如果一个概念在问题领域有意义,那么将它暴露给外界也是可以的。您的LoginInfo
在这方面是一个边缘细节,但疾病史,健康检查结果等等是这方面的主要候选人。
我还建议你查看Martin Fowler的优秀Analysis Patterns,其中有一章专门介绍医疗保健模式;你可能会从中得到一些有用的想法。
答案 1 :(得分:1)
决定如何组织数据时需要考虑的事项:是否有跟踪数据历史记录的要求。例如,您是否需要知道5年前患者的地址是什么(当然除了知道他们当前的地址)?如果是这样,那么将“历史敏感”数据作为自己的类,可能会让您在未来的路上更容易。当然,一些数据不会“历史敏感” - 例如出生日期。 :)
需要考虑的其他事项:患者之间将共享哪些数据?如果您保留有关家族病史的数据,那么这些数据是否应该在兄弟姐妹之间分享?如果是这样,那么将数据封装在自己的对象中将为您节省大量的复制/同步痛苦。
分析数据时,这些不是唯一的考虑因素。但他们肯定是这个难题的一部分。