gpt4 book ai didi

java - 避免带有模式的 getter 链

转载 作者:行者123 更新时间:2023-11-30 06:19:18 25 4
gpt4 key购买 nike

我目前正在制作一款你必须保卫城堡的游戏。每个级别都由敌人进入并攻击它的车道组成。现在,每个级别的城堡都是一样的,如果它在第 1 级受到损坏,它将在第 2 级“生成”并具有相同的生命值。所以我所做的是在游戏开始时创建一个城堡对象并在游戏的其余部分保留它。

这是阐明我的“设计”的插图:

enter image description here

现在当敌人到达城堡并破坏它时,我的代码如下所示:

this.getLane().getLevel().getGame().getCastle().doDamage(1);

这看起来不太好。我一直在寻找一些设计模式来提出一个更简洁的解决方案,但我并没有真正找到一个,并且想知道是否有人有想法。

(我知道还有一个关于链接 getter 的问题: https://stackoverflow.com/questions/8744668/java-getter-chaining-bad-or-good但它并没有真正提出解决方案)

最佳答案

一种转换方式:

this.getLane().getLevel().getGame().getCastle().doDamage(1);

为此:

this.doDamage(1);

将为 Game、Level 和 Lane 类编写一个 doDamage 方法。如果您的链接调用数量有限,这将起作用。

Game 类方法如下所示:

public void doDamage(int damage) {
getCastle().doDamage(damage);
}

Level 和 Lane 类依此类推。

关于java - 避免带有模式的 getter 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23296843/

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