我有一个这样构造的类:
public class Creature
{
protected final AI ai;
// ...about 10 other objects
public Creature (CreatureType type, int x, int y)
{
ai = new AI ();
// some other code
}
// ... many methods
}
我的AI类将是该生物的人工智能。我希望它可以完全访问这个生物对象,就像它在里面一样。我怎样才能做到这一点呢?通过某种微妙的方式来继承它?
发布于 2014-05-18 02:15:01
使AI成为生物的内部类将使AI能够访问生物的实例变量。
请参阅:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
发布于 2014-05-18 02:21:12
您可以通过以下几种方式完成此操作:
Creature
相关,而不必直接与其他类交互对第一种方法的改进是使用DI (依赖注入)并将AI对象传递给构造函数,而不是在其中初始化对象(使用new
)。
我看到你在评论中添加了:“我的AI类将为许多生物处理许多操作”。为了不让一个庞大的AI类与许多生物紧密耦合,我会创建一个AI接口和一个AIService,它将公开一个包含支持的操作的接口。这个服务将负责调用正确的AI实现(每个生物类型)来处理操作。
https://stackoverflow.com/questions/23714486
复制相似问题