我有一个像这样构建的类:
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将是该生物的人工智能。我希望它能够完全访问Creature对象,就好像它在里面一样。我怎么能实现这一目标?通过一些狡猾的方式继承它?
答案 0 :(得分:1)
使AI成为Creature的内部类将允许AI访问Creature的实例变量。
请参阅:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
答案 1 :(得分:0)
您可以通过以下几种方式实现:
Creature
相关且无需直接与其他课程互动,则有意义对第一种方法的改进将是使用DI(依赖注入)并将AI对象传递给构造函数,而不是在其中初始化对象(使用new
)。
我看到你在评论中添加了:"我的班级AI将为许多生物处理许多操作"。为了不让最终的AI类与许多生物紧密结合,我会创建一个AI接口和一个AIService,它将公开一个支持操作的接口。该服务将负责调用正确的AI实现(按生物类型)来处理操作。