"Bridging" 遥远 类 之间的(连接)方法

"Bridging" (Connecting) methods between distant classes

假设我有 Planet 和 Star classes 和 GameLogic class 的方式如下

//Planet.java
package Game;

class Planet //invisible outside of package
{
   public String getType() {return "Im a Planet";}
}

.

//Star.java
package Game;

class Star //invisible outside of package
{
   public String getType() {return "Im a Star";}
}

.

//GameLogic.java
package Game;

public class GameLogic //notice the PUBLIC keyword
{
   //arrayList of stars
   //arrayList of planets

   //a ton of methods for the logic of the game itself
}

这些都属于Game包,只处理游戏的整体逻辑,没有input/output。

然后,在另一个名为 UI 的包中,我有文本 class (UI.Text),它控制用户输入、打印输出并可以直接访问 GameLogic,因为游戏只能通过创建 GameLogic class.

实例来播放
//Text.java
package UI;
import Game.*;

public class Text
{
   //some control vars

   //MAIN method
   //input and output methods
   //bla bla bla
}

所以问题是:游戏将在 Text.java 中通过创建 GameLogic 实例来实例化。鉴于此,如果我想从 Star 和 Planet 输出 getType() 函数,我必须按以下方式完成将 Text 与 Planet/Star 连接起来的 "road"

//GameLogic.java
package Game;

public class GameLogic
{
   //same as before

   public String getPlanetType(int n) {return planetArrayList.get(n).getType();}
   public String getStarType(int n) {return starArrayList.get(n).getType();}
}

简而言之,getType() 方法已经存在于 "too-far-away" class 中,因此它迫使我创建这些简单但重复的 "bridge" 方法来连接两端.

TL-DR 版本:

class A has getType()

class B has array of A

class C needs to access getType() from array of A in B 

我认为这是一种非常低效且耗时的方法,并且有更好的替代方法(可能涉及接口?),所以如果有人能为我提供一些帮助,我将不胜感激。

谢谢

不要相信任何关于性能的事情。

唯一重要的是现实。

实际上,JIT 通常会颠覆您的微优化尝试。

意思是:在你看到真正的问题之前不要担心性能(太多)。如果您遇到问题,请开始 测量 而不是做出假设。

相反:专注于良好、简洁的设计;遵循 SOLID 原则;并编写干净、可读、可维护的代码。与担心这些微妙之处相比,这样做的代价要高出一百倍。

( 举个例子:getType() 方法 returns 一个 String 看起来已经是一个破烂的设计了。考虑过使用枚举吗?或者更奇怪:你是否意识到仅通过使用不同的类,你的对象就有不同的类型?)

如果您仍然认为应该研究性能,那么请先阅读有关 JIT 的内容、它的工作原理、它的作用等等。