gpt4 book ai didi

Java - 通过多层传递变量的替代方法

转载 作者:行者123 更新时间:2023-11-29 05:49:30 26 4
gpt4 key购买 nike

我正在构建一个小型控制台应用程序,作为复习 Java 的练习(在学习了一年 Java 之后,去年一直在学习 Haskell 和 Scala)。我有以下界面建模菜单行为:

public interface MenuItem {
public String output();
public InputHandler requestInput();

和:

public interface InputHandler {
public String promptUser();
public MenuItem handleInput(String input);
}

像这样的一些示例实现:

public class MainMenu implements MenuItem {

public String output() {
return "1.) Browse Books\n" +
"2.) View membership details\n" +
"3.) Exit\n";
}

public InputHandler requestInput() {
return new InputHandler() {
public String promptUser() {
return "Please select an option:\n";
}

public MenuItem handleInput(String input) {
int menuItem = Integer.parseInt(input);
if (menuItem == 1) {
return new BrowseBooks();
} else if (menuItem == 2) {
return new ViewUserDetails();
} else {
return new MainMenu();
}
}
};
}
}

我的问题是这些 MenuItem 实现类中的一些(例如 BrowseBooksMenu)需要访问其他类(即 LibraryManager 类)处理借书)。我不能只将这个 LibraryManager 类传递到 BrowseBooks 类中,因为它还需要传递到 MainMenu 类中(因为它们是有点循环),因此成为仅在特定 MenuItems 中使用的实例的大型构造函数的大困惑。

解决这个问题的好方法是什么?

最佳答案

您可能希望将依赖注入(inject)作为一种解决方案。非常适合管理在这种情况下的服务依赖性。有几个很好的独立 DI 实现,例如 Guice , WeldPicoContainer .

关于Java - 通过多层传递变量的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14473481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com