java - 如何使用java在视图之间制作导航系统
问题描述
我被一个问题困扰了很长一段时间。
我正在制作一个简单的教育 Java 软件,但我没有找到导航系统在页面之间切换的任何示例。我的意思是我正在制作一个“核心”,公开一个 API 和不同的用户界面,包括命令行界面(cli)、图形用户界面(gui)、web 界面,可能还有一个 android 应用程序。我的问题是关于 CLI,但可能也应该应用于 GUI:你将如何从一个页面切换到另一个页面?
我试图让它像一个实现一个接口的枚举,包括一个实例化视图的函数。这样,视图返回要显示的视图的特定枚举。然后执行枚举以创建视图。但是,即使它是可扩展的,它也确实看起来效率低下且复杂。
这是我的目标的简单表示。
Launcher
-> System.out.println("welcome");
-> go to Authenticate
Authenticate
-> System.out.println("1: sign in, 2: login")
-> if(input == 1) go to SignIn
-> else go to LogIn
SignIn
-> System.out.println("enter username and password")
-> username = input
-> password = input
-> new User(username, password)
-> go to Authenticate
LogIn
-> print("enter username")
-> go to Etc...
如果视图被另一个视图调用,导航是否应该集中以避免内存丢失?“菜单”不应该集中所有视图调用以使代码可读吗?
可能是一个愚蠢的问题,但我还没有找到答案,我真的很想要一个......
解决方案
在较大的系统中,通常有一个控制器层,它通常负责将用户从一个视图路由到另一个视图。这是MVC中的 C 。这取决于您使用的框架,许多框架指定了视图之间路由的特定方法。其他的则更临时,并允许视图层控制导航。
您基本上是在枚举中的应用程序中构建此控制器层。
推荐阅读
- javascript - 管道一个可观察的以更新来自 api 的结果的项目列表
- reactjs - 如何在 React 应用程序中包含带有钩子的 Preact 组件?
- sql - 日期格式 YYYY-MM-DDTHH:MM:SS.SSS+0000 上的 SQLlite 函数
- javascript - Text Tag React Native 中的函数
- kubernetes - “kubeadm upgrade apply v1.18.0-00”好像没有升级主节点
- python - 使用精灵表无法到达任何地方。我看过很多教程并在这里阅读
- c# - 如何在 .NET Core (C#) 中将此 SQL 查询编写为 LINQ 语句?
- c# - 当通过网络接收的数据更改属性时,如何将控件绑定到属性更改?
- vagrant - QEMU、KVM、Libvirt 有什么区别,如何配合 Vagrant 使用?这三个需要一起工作吗?
- c++ - WinAPI 如何移动窗口内容?