【发布时间】:2013-04-28 01:43:07
【问题描述】:
正如标题所述,为什么任何对象都应该继承 ToString() 方法(例如在 C# 或 Java 中)并以某种方式将其转换为 String?在某些情况下,这不是违反单一责任原则吗?我的意思是,如果您的对象不需要转换为字符串,那么您最终将对您的对象承担更多责任。
【问题讨论】:
-
我不同意所有类都应该定义
toString()方法。就个人而言,在编写公共 API 时,为了其他开发人员,我在所有类中定义了toString()方法,但在开发内部时,我只在必要时定义它,因此遵循 SRP。 -
对象是否违反了 SRP,在需要时定义了其非常自己的表示为
String的特定方式?恕我直言,这与 SRP 本身无关,而是与对象所需的功能有关。 -
@Vulcan 我并不是说任何对象都必须重新定义 ToString(),但无论如何它们必须具有该方法,即使特定子类型不应该有责任“转换”其值到字符串。
标签: c# java oop solid-principles single-responsibility-principle