java避免了带有模式的getter链
我现在正在做一个游戏,你必须保卫一座城堡。 每个关卡都由车道外的敌人进入并攻击而成。 现在,城堡在每一关都是一样的,如果它在一级受到伤害,它将在二级以相同的生命值“繁殖”。所以我做的是在游戏开始时创建一个城堡对象,并将其保留到游戏的其余部分
下面是一个说明我的“设计”:
现在,当敌人到达城堡并摧毁它时,我的代码如下:
this.getLane().getLevel().getGame().getCastle().doDamage(1);
看起来不太好。我一直在寻找一些设计模式,以想出一个更干净的解决方案,但我没有真正找到一个,我想知道是否有人有一个想法
(我知道也有这样一个问题,那就是如何将Getter链接起来: https://stackoverflow.com/questions/8744668/java-getter-chaining-bad-or-good 但它并没有真正提出解决方案。)
# 1 楼答案
一种转换方法:
为此:
将为游戏、关卡和泳道类编写doDamage方法。如果你的链式通话数量有限,这将起作用
游戏类方法如下所示:
等等,用于水平和车道课程