【发布时间】:2015-09-21 05:17:20
【问题描述】:
我有一个第三方对象,它使用从 Java.lang.Object 继承的 toString 方法。这种方法非常没用。但是我想不出一个干净的设计来覆盖这种行为。下面有不同的方法。
- 子类化并覆盖 toString 方法。
问题:如果原始对象内部的任何调用调用 toString 并检查返回的字符串,它们现在将中断。我不想破坏现有的对象,也不想假设第三方代码的清洁度。
- 使用 createString 方法创建一个 StringFactory。此方法对我的第三方对象以外的所有对象调用 toString,但我的对象以我的自定义方式构建一个 String。
问题:我既不能要求所有内容都传递给 createString 方法,也不能直接调用 toString(这在大型代码库中会很可笑),我也不能轻松记住哪些对象应该被通过,因为它们有自定义逻辑。
有没有人觉得干净的设计模式?
【问题讨论】:
-
子类化并提供
myToString方法并在您自己的代码中使用它可能是一种解决方案,具体取决于您想要实现的目标。行得通吗? -
关于#1 - 如果他们调用
toString并且根据其正确性的答案,他们无法理解toString的目的。 -
@glowcoder 是的,这就是为什么我建议使用 new 方法,而不是覆盖。类似于 Bohemian 的回答,但更符合我的口味。
标签: java design-patterns