我有两个类的Apple和Orange:
public final class Apple{
int getJuice();
}
public final class Orange{
int getJuice();
}
我无法改变他们。我有三等水果,例如:
class FruitManeger {
Apple apple;
Orange orange;
enum Fruits{
Apple,Orange
}
Fruits favorFruits;
int getJoice(){
if(favorFruits==Fruits.Apple){
apple.getJuice();
}else if(favorFruits==Fruits.Orange){
orange.getJuice();
}
}
}
我的问题:在FruitManeger类中实现getJuice方法的最佳方法是什么?
如您所见,如果我有很多水果,我应该添加很多(如果没有)到期时间。
当然,我可以使用反射来按名称调用方法,但是当getJuice方法返回一个对象并且您想要对此做相同的事情时,这不是一个好主意。
有什么更好的办法吗?
有什么更好的办法吗?
是的,以更多的方式重构该应用程序...
请记住:您不能修改Apple或Orange,但是OOP可以确保扩展这些类,因为它们不是最终的。
class CorrectApple extends Apple implement IJuiceble{
@Override
int getJuice();
}
class CorrectOrange extends Orange implement IJuiceble{
@Override
int getJuice();
}
现在
interface IJuiceble{
int getJuice();
}
最后是经理:
class FruitManeger {
private CorrectApple apple;
private CorrectOrange orange;
int getJoice(IJuiceble correctfruit){
return correctfruit.getJuice();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句