设计模式为"toString"第三方对象

Cor*_*all 3 java design-patterns

我有一个第三方对象,它使用从Java.lang.Object继承的toString方法.这种方法很无用.但是我想不出一个干净的设计来覆盖这种行为.以下不同的方法.

  1. 子类并覆盖toString方法.

问题:如果原始对象内部的任何调用调用toString并检查返回的String,它们现在将中断.我不想打破现有的对象,也不想假设第三方代码的清洁度.

  1. 使用createString方法创建一个StringFactory.这个方法在我讨论的第三方对象之外的所有对象上调用toString,但是对于我的对象以我的自定义方式构建一个String.

问题:我既不能要求所有内容都传递给createString方法,也不能直接调用toString(这在大型代码库中会很荒谬),也不能轻易记住应该传递哪些对象,因为它们有自定义逻辑.

有没有人有一个感觉干净的设计模式?

Boh*_*ian 5

只需在util类上使用静态方法:

public class MyUtils {

    public static String toString(My3rdPartyClass obj) {
        // impl here
    }
}
Run Code Online (Sandbox Code Playgroud)


cor*_*iKa 5

我真的很喜欢波希米亚人的回答.

考虑到这一点,OOP解决方法就是这样

class My3rdPartyClassFormatter {
    private My3rdPartyClass data;
    public My3rdPartyClassFormatter(My3rdPartyClass d) { this.data = d; }
    public String toString() { 
        // impl here
    }
}
Run Code Online (Sandbox Code Playgroud)