【问题标题】:What are some good ways of managing settings in gui applications?在 gui 应用程序中管理设置有哪些好方法?
【发布时间】:2011-01-07 18:57:22
【问题描述】:

如果我有一个可通过菜单项或配置窗口访问的设置,该设置可在运行时更改,例如“粗体文本开/关”;有什么好的方法可以确保所有适用的组件都知道这个设置的价值?

【问题讨论】:

  • 您使用什么语言?
  • Java,但我认为这并不重要。如果有其他语言中很好的机制,也许我会在我使用的那个中模仿它们。

标签: user-interface configuration settings menu


【解决方案1】:

您没有提供实现语言的细节,因此答案会有些笼统。 假设您的 GUI 使用的是支持偶数模型的语言(例如 Java),只需为任何应该受设置影响并在事件“设置更改”时触发的组件都有一个事件处理程序。然后从设置配置窗口调用此类事件。不要忘记在所有组件更新完成后重绘(或在每个组件更新时重绘)。

另外一点是希望使用通用子组件。 例如,如果您正在使用具有可配置字体的标签文本,则使用通用的“具有可配置字体的标签”类,以确保您永远不需要将上述事件侦听器分配给您创建的每个标签。

【讨论】:

  • 那么你将如何控制这个监听器注册呢?你会有一些全局可用的 EventHandlerService 来注册吗?将对此的引用传递给可能需要它的每个组件似乎并不实际。
  • 我很想声明事件处理程序服务将是一个静态全局对象,但我几乎可以肯定有一个更好的模式我现在不记得了。
【解决方案2】:

如果会有很多设置,我已经实现了一个 sqlite DB 来保存文件中较小数量的更改键值对的更改就足够了。然后实现一个观察者设计模式,以便在完成任何更改时调用一个 gui 类列表来进行更改。

【讨论】:

  • 你将如何管理观察者的引用?当组件注册为观察者时,它们注册的是什么?你会让这个东西全局化还是传递给组件。如果您传递,您是否从同一个地方创建所有组件?
猜你喜欢
  • 1970-01-01
  • 2011-11-29
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
相关资源
最近更新 更多