首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java:创建特定类

Java:创建特定类
EN

Stack Overflow用户
提问于 2014-05-18 02:01:30
回答 2查看 105关注 0票数 1

我有一个这样构造的类:

代码语言:javascript
运行
复制
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类将是该生物的人工智能。我希望它可以完全访问这个生物对象,就像它在里面一样。我怎样才能做到这一点呢?通过某种微妙的方式来继承它?

EN

回答 2

Stack Overflow用户

发布于 2014-05-18 02:15:01

使AI成为生物的内部类将使AI能够访问生物的实例变量。

请参阅:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

票数 1
EN

Stack Overflow用户

发布于 2014-05-18 02:21:12

您可以通过以下几种方式完成此操作:

  • Inclusion:这就是你所做的,只是你应该将局部变量和类变量传递给AI方法(分离关注点等)。这也是我最喜欢的approach.
  • Inheritance:,只有当类和内部类之间存在关系时才有意义:如果AI只与Creature相关,而不必直接与其他类交互
  • 将这些类放在同一个包中,并将相关的访问修饰符设置为包私有

对第一种方法的改进是使用DI (依赖注入)并将AI对象传递给构造函数,而不是在其中初始化对象(使用new)。

我看到你在评论中添加了:“我的AI类将为许多生物处理许多操作”。为了不让一个庞大的AI类与许多生物紧密耦合,我会创建一个AI接口和一个AIService,它将公开一个包含支持的操作的接口。这个服务将负责调用正确的AI实现(每个生物类型)来处理操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23714486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档