我仍然是java的初学者,但我尝试编写好的代码(obj oriented)。但是,我遇到了方法removeFromWorld
的问题。我有几种方法,但无论我做什么,我似乎都打破了良好编程习惯的“规则”。保留类的独立性或避免类型检查
我与类型检查试了一下:
public class World{
private Set setGiraffes;
public void removeFromWorld(Animal animal){
if (isGiraffe(animal))
setGiraffes.remove((Giraffe) animal)
else if (isZebra(animal)){...}
else if ...
}
}
public abstract class Animal{..}
public class Giraffe extends Animal{..}
,但听说是一个糟糕的主意,因为这是不可能添加一个新的动物在不改变现有的方法。我考虑将removeFromWorld
移动到动物并覆盖它在每个子类,但因为它是使用套的世界,这似乎不好,以及
我很不知道什么是“优雅”/良好的解决方案。
首先要做的事情:解决您的压痕以提高可读性,遵循Java的命名约定,并使用泛型。下一步:解释*为什么*你想要一组长颈鹿和一匹斑马等。这背后的推理是什么? – 2013-05-11 12:24:56
我认为我修正了缩进和命名,不完全确定泛型所代表的含义。我需要这些集合来遍历它们并检查可能的交互(与所有其他长颈鹿一起进入该领域的进程)。 – Wouter 2013-05-11 12:48:55