Cra*_*lus 1 java design-patterns
我有2个类,例如A和B.
这些类有几个具有相同名称的getter/setter方法.
现在在代码中我执行以下操作:
if(obj.getClassName().equals(A.class.getName())){
A a = (A) obj;
String result = a.getInfo();
}
else if(obj.getClassName().equals(B.class.getName())){
B a = (B) obj;
String result = a.getInfo();
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法调用getInfo
避免if语句.
注意:我无法重构类以使用继承或其他东西.
我只是感兴趣,如果在java中有一个技巧,以避免if语句.
除非你想使用反射,否则没有.Java处理两种类型,它们恰好将getInfo()
完全独立的方法声明为完全独立的相同方法().
如果你有共性,你应该使用一个共同的超类或它们都继承的公共接口.您已经标记了"设计模式"这个问题 - 模式是使用该语言提供的工具来显示共性.
正如Eng.Fouad所示,instanceof
无论如何使用都更简单 - 更好,因为这意味着你的代码仍然可以使用A
或的子类B
.
当然,你可以通过把它放在一个地方来隔离这种丑陋 - 要么是一个外观类,它可以用a A
或a 构造B
,或者用一个方法执行这个检查,然后从多个地方调用它.