我目前正在学习计算机工程,我记得一个叫做信息系统导论类(class)的教授说,两个以 1:1 基数相关的类(class)是没有意义的。
例如:我有 Client
类和 Telephone
类(class)。让我们假设客户端只能有一部手机。教授说创建Telephone class
没有意义, 电话应该是 Client
的一个属性类(class)。我完全同意他的看法。
但是现在我正在上软件工程课,教授(不一样)没有对这个问题发表任何评论,现在我真的对此感到困惑。
正确的做法是什么?
最佳答案
我会说你的信息系统导论教授是正确的。还有你的 SE 教授(假设他缺乏评论使他成为逆向者)。根据您的要求和您正在使用的域,它们都是正确的。但是没有任何其他细节,很难为您建模,我倾向于您的 CE 教授所说的话。记住您学到的所有有趣的小原则:KISS、DRY 等,并将它们应用到您的问题中。
如 Client
永远不可能有多个电话号码,并且您的域中没有其他实体需要电话号码,然后是单独的 Telephone
课是没有必要的。在现实世界中,如果您的要求含糊不清,请从您的客户那里了解更多信息。
如果有人在路上决定 Client
s 可以接受多个电话号码,或者将另一个实体引入到需要电话号码的域中,这是一个相当容易实现的重构。
考虑到这一点,让我们假设您的 Client
有一个单独的 Address
包含电话号码的类。也许那个 Address
类被另一个类重用,也许 Invoice
或 Shipment
,其中 Address
可以在这两种情况下共享或应用。在本例中,您可能需要 Address
( Telephone
) 成为它自己的类。
在您的示例中,Telephone
可能有点太做作了。如果它有许多属性( AreaCode
、 InternationalPrefix
、 Number
等),您会希望它成为一个单独的类以供重用,但如果 Client
只需要一个名为 Telephone
的字符串值用户输入只是为了引用,那么成为它自己的类可能没有意义。
关于class - 有两个由 1 :1 cardinality? 相关的类是否有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8236066/