有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java隔离Swing侦听器逻辑以获得更干净的代码

我正在努力保持我的Java Swing代码干净。我认为一种方法是尝试将侦听器逻辑与GUI的其余部分隔离开来

我目前试图做的是将所有与监听器相关的功能隔离到一个单独的类/对象中,该类/对象与GUI的主框架分开存在,这样它就可以成为保存监听器的中心位置,并启动将这些监听器分配给组件的逻辑

通过这种方式,GUI可以分为一个哑区(JFrame a包含/显示JPanel B、C、D等),它不包含组件在操作时如何交互的逻辑,而一个更智能的区包含逻辑

基本上,我正在考虑实施以下内容:

  • ListenerAssigner类包含应用程序中作为内部类使用的所有侦听器,对它们进行实例化,并在内部将其作为ArrayList保存。它包含对JFrame的引用。它不是JFrame的内部,而是外部
  • 所有侦听器在实例化时都将包含一个枚举值。这将用于将自身与需要侦听器的对象的枚举值进行比较
  • ListenerAssigner调用JFrame上的自定义方法(通过接口添加),将侦听器的ArrayList传递给需要侦听器的对象
  • JFrame依次调用其内部成员上的自定义方法,将ArrayList传递给其内部对象,然后这些对象会重复
  • 持有需要侦听器的对象的对象将调用对象上的findAndSetListener方法,并将ArrayList传递给它们
  • 这些对象通过迭代侦听器列表来实现findAndSetListener,获取它们的枚举值,将它们与侦听器的枚举值进行比较,并在匹配时将该侦听器分配给自身。我们通过for循环中的if语句来避免很长的switch语句

通过这种方式,监听器是动态分配的,并且都包含在一个单独的部分中,而不是整个GUI的不同部分

这种方法看起来有效吗?这会遵守坚实的原则和干净的编码方法吗,还是我应该放弃将侦听器逻辑保持在一个地方的尝试


共 (0) 个答案