如何在Java中从两个不同的类调用相同的方法

最高

我有两个类的AppleOrange

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方法返回一个对象并且您想要对此做相同的事情时,这不是一个好主意。

有什么更好的办法吗?

ΦXocę웃Пepeúpatsu

有什么更好的办法吗?

是的,以更多的方式重构该应用程序...

请记住:您不能修改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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Scala中两个不同的类扩展相同的类返回相同的类型

如何在两个不同的类中使用相同的方法(JavaFX和Scenebuilder)?

如何在两个不同的类中使用相同的add()方法

Ruby Rails:Rails如何在两个不同的gem中处理相同的方法名称

我如何在Java中的不同行中有两个类彼此交互?

如何从两个父类中调用“重写”方法?

Java - 两个类,名称相同,包相同,但在不同的文件夹中

两个函数或两个类如何在python中相互调用

如何在java中组合两个不同的Map?

如何在componentDidMount中调用两个异步方法?

如何在codeigniter中形成相同ajax的两个不同页面中显示不同的结果

如何在两个不同的类上使用相同的JsonProperty Name

如何给两个不同的类提供相同的接口?

两个类的Java设计模式共享相同,相似但不同的方法

java bean在两个不同的类中不能以相同的方式工作

在一行中为同一类的两个对象调用相同的方法

如何在python中具有相同键的两个不同字典中组合值

如何在Python 3中检查两个不同列表中的相同项目?

在Spring的@Controller类中从单个方法调用两个不同的服务是否很好?

如何在Java中编写一个采用两个相同类型参数的通用方法?

如何在两个目录中查找名称相同但行数不同的文件?

如何在MySQL中相同列不同行中找到两个值之间的差异

如何在js中为两个不同类型的数组列表使用相同的数组?

如何在两个不同的select html标记中禁用相同的选择

如何在React中为两个相同的子组件分配不同的值

如何在Node.js中以相同的形式传递两个不同的参数

WPF:如何在两个不同的DatePickers中获得相同的日期

如何使用两个相同的类名和具有不同返回类型的相同辅助方法重构此代码?

如何在Kotlin中检查两个对象是否具有相同的类?