gpt4 book ai didi

java - "Bridging"远程类之间的(连接)方法

转载 作者:行者123 更新时间:2023-11-30 10:46:11 24 4
gpt4 key购买 nike

假设我有以下方式的 Planet 和 Star 类以及 GameLogic 类

//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 包,它只处理游戏的整个逻辑,没有输入/输出。

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

//Text.java
package UI;
import Game.*;

public class Text
{
//some control vars

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

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

//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() 方法已经存在于“太遥远”的类中,因此它迫使我创建这些简单但重复的“桥梁”方法来连接两端。

TL-DR 版本:

class A has getType()

class B has array of A

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

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

谢谢

最佳答案

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

唯一重要的是现实。

在现实中,JIT 通常会颠覆您的微观优化尝试。

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

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

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

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

关于java - "Bridging"远程类之间的(连接)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36695599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com