避免无法修改的类时使用instanceof的最佳设计模式?

时间:2018-07-04 03:18:18

标签: java oop design-patterns

我正在重写第三方库类提供的方法,并尝试记录发生的异常:

@Override
someJavaMethod(arg1, arg2, Exception ex){
        //Declare some variables with default values
    if (ex instanceof SpecificException1)
        //Set values for the variables
    else if (ex instanceof SpecificException2)
        //Set some other values for the variables
    else
        //Do nothing
}

这里的问题是SpecificException1SpecificException2都是第三方例外,我无法对其进行修改。

我知道使用instanceof并不是解决此问题的好方法。我应该使用哪种设计模式/ OO原则来处理这个问题?

(还建议我查看访问者和非循环访问者的设计模式,但是我不确定它们是否可以应用于无法修改的类)

2 个答案:

答案 0 :(得分:2)

解决这个问题没有根本不同的方法(至少在Java中没有)。如果您使用允许多调度的语言,则可以为不同的异常类型重载消息。

我宁愿建议简单地接受它。如果可以的话,例如,通过确保每个if块进入不同的方法中,我将看到干净代码规则如何提供帮助。

嗯,有一种稍微不同的方法:您可能会使用地图。键将是异常类,值将是 something ,其中包含需要分配的不同变量的值。

答案 1 :(得分:1)

将异常扔到try-catch块中并使用catch子句来标识异常是什么?