You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何通过依赖注入从Main类向Game类注入前后端实例

解答

完全可以,这是手动实现依赖注入的最基础场景,不需要引入额外的IoC框架就能完成,核心思路是把Game类内部自己创建前后端实例的逻辑,转移到外部调用方(也就是Main类)完成,再把创建好的实例传入Game类使用。

具体改造方式

  • 改造Game类:移除run方法里直接new实例的逻辑,把前后端对象定义为类的成员变量,通过构造方法接收外部传入的依赖实例
import sample.backend.*;
import sample.frontend.*;
 
public class Game {
    private final GameBackendImpl gameBackend;
    private final GameUIImpl gameUI;

    // 构造器注入:接收外部传入的依赖实例
    public Game(GameBackendImpl gameBackend, GameUIImpl gameUI) {
        this.gameBackend = gameBackend;
        this.gameUI = gameUI;
    }

    public void run(){
        // 直接使用注入好的实例编写业务逻辑即可,不需要再自行实例化
    }
}
  • 改造Main类:在main方法里先创建好前后端实例,再在初始化Game对象时把这两个实例作为参数传入,完成注入
public class Main {
    public static void main(String[] args) {
        // 外部统一创建依赖实例
        GameBackendImpl backend = new GameBackendImpl();
        GameUIImpl ui = new GameUIImpl();
        
        // 注入依赖后获取Game实例
        Game game = new Game(backend, ui);
        game.run();
    }
}

优化建议

如果后续需要做单元测试、或者要替换前后端的不同实现,建议先抽象出GameBackend、GameUI两个接口,让对应的实现类实现接口,Game类的成员变量、构造参数都使用接口类型声明,不要直接绑定具体实现类,这样代码耦合度更低,也更符合依赖倒置的设计原则。


内容的提问来源于stack exchange,提问作者Pencho Blazquez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 21:15:43