OOP:创建一个电话号码对象或地址对象会很难吗?

OOP:创建一个电话号码对象或地址对象会很难吗?,oop,object,Oop,Object,很多东西都可以有电话号码和地址。人员、地点等。您希望电话号码和地址具有相同的功能、格式和验证,无论是个人的电话号码或地址还是地点等 创建一个电话号码类和一个地址类,并在那些有电话号码和地址的对象中使用它们,这会不会太远 我的问题还涉及到可以跨不同对象重用的其他属性。是的,您可以走得太远,这是一个边界。我倾向于在将事物视为字符串或其他已定义的类/类型之外的事物变得麻烦的地方画一条线 如果你需要以某种方式操纵电话号码(例如,将它们分隔成区域代码和其他位)或地址(号码、街道、城市、国家等等),那么,是

很多东西都可以有电话号码和地址。人员、地点等。您希望电话号码和地址具有相同的功能、格式和验证,无论是个人的电话号码或地址还是地点等

创建一个电话号码类和一个地址类,并在那些有电话号码和地址的对象中使用它们,这会不会太远

我的问题还涉及到可以跨不同对象重用的其他属性。

是的,您可以走得太远,这是一个边界。我倾向于在将事物视为字符串或其他已定义的类/类型之外的事物变得麻烦的地方画一条线

如果你需要以某种方式操纵电话号码(例如,将它们分隔成区域代码和其他位)或地址(号码、街道、城市、国家等等),那么,是的,考虑将它们作为对象。

除了存储和显示电话号码或地址之外,我很少对它们做任何事情,在这种情况下,它们就像字符串一样,不需要有自己的专用类。对于地址,我甚至没有基于部分(除了zipcode)进行分离,更喜欢自由格式条目,这样就不会打扰那些地址格式我不知道的人


按照简化和荒谬的方式,你也可以客观化组成你电话号码的字符,但那是愚蠢的。

我认为这是完全可以接受的。设计良好的类将允许您在许多不同的项目中重用它。如果您有许多项目可以使用这种功能,那么使用对象是确保代码可重用和可移植的最佳方式。您可以扩展类的功能来处理任何与电话号码/地址相关的事情,这是一组函数或您反复重写的一次性代码所无法比拟的


最后,这是您的决定,我个人认为这应该属于良好实践。

您需要一个
实体类
地址类

实体
可以是个人、地点、组织、咖啡店之类的,而
地址
可以捕获电话号码、电子邮件ID、Lat/Long之类的信息

保留实体和地址将帮助您跨越不同的对象。
在实体和地址之间建立多对多关系会有所帮助,从长远来看,松散耦合会有所帮助。

我认为答案取决于上下文,但如果没有上下文,这似乎有点毫无意义。。DDD(领域驱动设计)一直是一个很好的发展方向。这就是我要说的。在一个复杂的域模型中,您将拥有一些属性(电话号码、地址),这些属性在任何地方都具有相同的格式、验证、功能等。但它们比诸如性别、年龄或出生日期等简单的事情更复杂。所以他们应该有自己的类吗?+1 for取决于上下文。如果我是一个电话运营商,甚至区号也将被建模为它自己的类。如果我是一个邮局,即使邮政编码也会有自己的类,或者甚至可能更细粒度。我喜欢你说它是边界。这就是我把它扔出去的原因。哈哈,阿努拉格:我同意,绝对反对。但即使在一个普通的商业领域,我真的想一遍又一遍地重写电话号码代码吗。地址也一样。在我的例子中,我总是把地址分开,这样我就不会得到垃圾数据,我也不想一遍又一遍地重写它。即使只是从一个项目到另一个项目,而不一定在同一个项目中多次。谢谢你们两位。但是,但是,你是说我的
第五类扩展了阿拉伯数字
,而我的
类阿拉伯数字扩展了数字类对象
是不必要的?!?;-)@安德鲁:我不知道。如果你需要用不同的方法来对待五个
,比如说三个
,那么,是的,子类
阿拉伯数字
(顺便说一句,我确实得到了幽默,但这也是一个足够有趣的问题,可以得到真正的答案)。