Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代码与GUI分离的设计_Java_Javafx_Playlist - Fatal编程技术网

Java 代码与GUI分离的设计

Java 代码与GUI分离的设计,java,javafx,playlist,Java,Javafx,Playlist,我需要创建一个播放列表,我想使用两个类来分离代码/逻辑和GUI: 播放列表(代码/逻辑) 播放GUI(GUI) 可以单独使用播放列表类,例如在某种命令行环境中。现在的问题是,在使用GUI时,如何将这两个类插入到一起?到目前为止,我的想法是: 从播放列表类中公开可观察列表,在播放GUI类中创建方法setItemSource(播放列表源) 不确定在Java中是否可能,只需从.NET了解这一点:让Playlist类火灾事件并让playligui捕获它们,应该会导致代码解耦?:-) 欢迎新想法:

我需要创建一个播放列表,我想使用两个类来分离代码/逻辑和GUI:

  • 播放列表
    (代码/逻辑)
  • 播放GUI(GUI)
可以单独使用播放列表类,例如在某种命令行环境中。现在的问题是,在使用GUI时,如何将这两个类插入到一起?到目前为止,我的想法是:

  • 播放列表
    类中公开可观察列表,在
    播放GUI
    类中创建方法
    setItemSource(播放列表源)
  • 不确定在Java中是否可能,只需从.NET了解这一点:让
    Playlist
    类火灾事件并让
    playligui
    捕获它们,应该会导致代码解耦?:-)
欢迎新想法:-)注意,我正在使用Java 7和JavaFX,尽管我想JavaFX并没有限制可能性,只是扩展了它们。

Java中的事件:

其他备选方案包括:
或者两者都是通过套接字进行通信的独立过程。请看一下FXML、控制器和SceneBuilder工具。

我认为您的基本概念是正确的,即责任委托

我将创建一个模型的接口,只公开那些您认为任何基本控制器/查看器都需要的方法。这意味着您可以更改实现,而不影响依赖它的任何组件

侦听器本质上只是一种回调机制,在这种机制中,相关方(通过公共接口)注册自己,以便在发生他们感兴趣的事情时得到通知

有关更多信息,请参阅

我将从一个公共库开始,该库定义所有各方都需要知道的基本接口(例如
播放列表
和侦听器)


这将允许根据您的需要设计播放列表的“n”实现

代码/逻辑部分应为API,这样,如果您用文本界面替换GUI,则源代码中不会有任何更改(可能配置除外)。