【问题标题】:Design for separating code and GUI分离代码和GUI的设计
【发布时间】:2012-10-10 09:17:00
【问题描述】:

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

  • Playlist(代码/逻辑)
  • PlaylistGui(图形用户界面)

应该可以单独使用 Playlist 类,例如在某种命令行环境中。现在的问题是,当使用 GUI 时,如何将两个类组合在一起?到目前为止我的想法:

  • Playlist 类公开一个可观察列表,在PlaylistGui 类上创建一个方法setItemSource(Playlist source)
  • 不确定在 Java 中是否可行,只需从 .NET 中了解:让Playlist 类触发事件并让PlaylistGui 捕获它们,应该导致解耦代码吗? :-)

欢迎新想法 :-) 注意我使用的是 Java 7 和 JavaFX,虽然我猜 JavaFX 不会限制可能性,只是扩展它们。

【问题讨论】:

  • 代码/逻辑部分应该是一个 API,这样如果您用文本界面替换 GUI,源代码中的任何内容(可能除了配置)都不会发生变化。

标签: java javafx playlist


【解决方案1】:

Java 中的事件: http://castever.wordpress.com/2008/07/31/how-to-create-your-own-events-in-java/

其他选择是: Java Delegates? 或两者都作为单独的进程通过套接字进行通信

【讨论】:

    【解决方案2】:

    了解 FXML、控制器和 SceneBuilder 工具。

    【讨论】:

      【解决方案3】:

      我认为你的基本概念是合理的,责任授权。

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

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

      查看Writing Event Listeners 了解更多信息。

      我会从一个通用库开始,它定义了所有各方都需要知道的基本接口(例如PlayList 和侦听器)。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-12
        • 1970-01-01
        • 1970-01-01
        • 2015-02-07
        • 1970-01-01
        相关资源
        最近更新 更多