我应该使用监听器还是观察者?

2024-06-24

我的 GUI 中有一个下拉框,它显示另一个类中 ArrayList 的内容。 新对象可以添加到 GUI 中其他位置的 ArrayList 中,因此我需要知道它何时更新,以便刷新下拉菜单。据我所知,我的两个选择是扩展 ArrayList 类以允许我向其中添加自己的changeListener,或者使包含相关 ArrayList 的类扩展为可观察的。

哪一个是更合适的解决方案?


这两种解决方案本质上是相同根设计模式(四人帮定义的“观察者”模式)的实现。在前一种情况下,您使 ArrayList 本身“可观察”,在后一种情况下,您使域使用数组列表“observable”的对象。

我的倾向是做后者:使领域对象可观察。这主要是因为您最终可能会对域对象进行其他更改(应更新 GUI)。如果它已经是可观察的,则您已经设置好了。

请注意,您不必严格扩展java.util.Observable- 您无需这样做即可实现设计模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该使用监听器还是观察者? 的相关文章

  • 我的应用程序中的 google+ 集成

    我是 Android 开发新手 正在创建一个带有 Google 集成的 Android 应用程序 我看到了一个教程并开始遵循它 但自教程以来 Google 已经更新了 Google 集成 例如 在本教程中您曾经单击 获取配置文件 按钮htt
  • 为什么在Java中读取易失性和写入字段成员是不可扩展的?

    观察以下用 Java 编写的程序 完整的可运行版本如下 但程序的重要部分在下面的代码片段中 import java util ArrayList A not easy to explain benchmark class MultiVola
  • Hibernate统计打印HQL:null

    我是使用休眠的新手 我打开了统计信息 与普通的 HQL 查询一起 我得到了许多这样的统计信息 INFO Statistics HQL null time 1724ms rows blah 有人可以以任何方式帮助我为什么null查询大约需要
  • 从 java 代码运行 Python 脚本

    这是我第一次在java中尝试python 我正在尝试从我的代码执行 python 脚本 如下所示 Process process Runtime getRuntime exec python C Users username Desktop
  • 为什么这个 Java 静态字段为空?

    public class StaticTest private static String a private static String b this is a public static void main String args a
  • Java(正则表达式)-获取句子中的所有单词

    我需要将 java 字符串拆分为单词数组 假设该字符串是 Hi I need to split this string into a serie s of words 目前我正在尝试使用这个String strs str split w 但
  • 使用 Hashmap 理解两个或多个键

    我的哈希图有问题 在我的哈希映射方法中 我希望有两个或多个关键字作为键 而不是只有一个 例如 我希望用户输入一些包含两个或多个关键字的句子 假设 教授姓名 是关键字 例如 String temp3 instructor teacher me
  • Selenium 和 xpath:查找带有类/id 的 div 并验证其中的文本

    我正在努力拥有xpath find a div并验证div有一个特定的string里面的文字 这是HTML div class Caption Model saved div and div class gwt HTML sfnStanda
  • 面临 process.start(); 的问题在 Android 棒棒糖中

    面临一个问题process start 在 Android 棒棒糖中 我在服务中遇到了 android lollipop 后台进程的问题 我的代码在 KitKat 之前工作正常 我有一个ProcessBuilder pBuilder并向其中
  • 识别包含本机方法实现的库文件/源

    如何识别包含本机方法实现的库文件 Ex public native String intern 我在哪里可以找到实施 source code of String intern 方法 找到了答案String intern 与快速谷歌搜索 ht
  • StringBuilder - 重置或创建新的

    我有一个条件 StringBuilder 不断存储与大型平面文件 数百 MB 中的模式匹配的行 但是 在达到条件后 我将 StringBuilder 变量的内容写入文本文件 现在我想知道是否应该通过重置对象来使用相同的变量 gt strin
  • 菜单项标题未显示

    菜单项的标题未显示在片段内 我在菜单文件中有两个项目 第一个是带有图标和标签的showAsAction always在工具栏中显示图标 第二个只有标题 我不知道这里出了什么问题 菜单项的所有操作均有效 例如下面 菜单 销售 xml menu
  • 如何更新 Websphere 7 以使用 EL2.2?

    这就是我所做的 按照此林肯 巴克斯特的帖子 http ocpsoft com java jsf2 java jsf2 how to add the magic of el el2 to jsf 我下载了 el api 2 2 jar 和 e
  • Java XPath API - 获取表示子树的字符串

    我的问题不是关于 xpath 语法 而是与 xpath 周围的 java API 有关 考虑以下 xml
  • 在java中访问dll方法

    我正在尝试访问java中用c 编写的dll方法 从下面的代码我试图构建已成功生成的 dll using System using Microsoft Win32 namespace CyberoamWinHelper public clas
  • JdbcTemplate queryForInt/Long 在 Spring 3.2.2 中已弃用。应该用什么来代替呢?

    JdbcTemplate 中的 queryforInt queryforLong 方法在 Spring 3 2 中已弃用 我无法找出为什么或什么被认为是使用这些方法替换现有代码的最佳实践 典型方法 int rowCount jscoreJd
  • JPA2+Hibernate 3.6.0 中的 JTA 还是 LOCAL 事务?

    我们正在重新思考我们的技术堆栈 以下是我们的选择 由于应用程序的复杂性等 我们不能没有 Spring 和 Hibernate 我们还从 J2EE 1 4 迁移到 Java EE 5 技术栈 Java EE 5 JPA 2 0 我知道Java
  • 从 Java 程序中获取局部变量的名称和类型

    这是我正在尝试的代码 JavaCompiler compilerA ToolProvider getSystemJavaCompiler int resultA compilerA run null null null Users a Do
  • JFrame.repaint() 和 JPanel.repaint() 之间的区别

    谁能解释一下两者之间的区别JPanel repaint 方法和JFrame repaint 方法 我想两者都调用paintComponent JPanel 中的方法 请澄清 谢谢 Calling repaint 在任何组件上都会向重绘管理器
  • 从 google play 中提取统计信息

    我正在建立一些统计数据 并希望获得来自 google play 应用程序商店 的统计数据 最受欢迎 下载量 价格等信息 有谁知道是否有这个 API 或者我必须自己抓取它 有一个名为 android market api 的项目http co

随机推荐

  • Keras 预测给出的误差与评估不同,损失与指标不同

    我有以下问题 我在 Keras 中有一个自动编码器 并对其进行了几个时期的训练 训练概览显示验证 MAE 为 0 0422 MSE 为 0 0024 但是 如果我随后调用 network predict 并手动计算验证错误 我会得到 0 0
  • 对象不支持此操作 IE9 与 CustomEvent 初始化

    我在 IE9 中遇到以下错误 对象不支持此操作 关于此有各种各样的问题 但我的问题专门针对以下代码 var myEvent new CustomEvent additem 据我了解 CustomEvent在 IE9 中支持作为 DOM 操作
  • 如何重命名对象 boto3 S3?

    我在 S3 中有大约 1000 个对象 它们以 abcyearmonthday1 abcyearmonthday2 abcyearmonthday3 想要将它们重命名为 abc year month day 1 abc year month
  • 在删除属性之前,必须删除或重新定义所有包含外键的内容 - EF Core

    使用实体框架核心添加外键后尝试添加迁移时出现上述错误 我正在添加FK public class ApplicantDetail Key public int Id get set ForeignKey GrantProgramFK publ
  • 如何在 JSF 中创建现有组件的组合?

    我想知道是否可以编写我自己的组件 或称其为 Widget Object 我的意思是 而不是 例如 使用h panelGroup and a h outputLabel在里面 做我自己的h panelMarkzzz 作为 panelGroup
  • Firefox 中隐藏滚动条

    我想在页面中隐藏滚动条 但我可以像它有滚动条一样滚动 所以我不能使用溢出 隐藏因为我希望我可以像正常一样滚动 但看不到滚动条 所以我使用这个css代码 类not scroll body是一类body标签 not scroll body we
  • 错误 '_' 未定义 no-undef

    我使用 eslint 检查我的代码 并发生错误 错误 未定义 no undef 我这样写代码 new webpack ProvidePlugin jquery jquery jQuery jquery window jQuery jquer
  • MySQL 获取 ORDER BY 中的行位置

    具有以下 MySQL 表 id INT UNSIGNED name VARCHAR 100 我怎样才能选择一个single行及其在表中其他行中的位置 排序时 name ASC 因此 如果表数据按名称排序时如下所示 id name 5 Alp
  • 如何用相同的方法“包装”两个类?

    我必须使用相同的方法处理两个类 但它们不实现相同的接口 也不扩展相同的超类 我无法 不允许更改此类 并且我不构造此类的实例 我只获取此类的对象 避免大量代码重复的最佳方法是什么 班级之一 package faa public class S
  • 如何解释此故障转储

    我们在 iis 中托管的特定网站上遇到了问题 我无法从事件日志中获取太多信息 我对这些低水平的 原始 诊断工具有点不适应 如果我找错了树 在这种情况下请告诉我 例如 IIS 刚刚损坏 或者我是否 我按照正确的路径尝试定位问题 为应用程序池
  • NativeScript + Vue.js + FontAwesome

    我正在尝试使用 FontAwesome 图标集通过 NativeScript 和 Vue js 构建应用程序 但我无法找出问题 因为我什至没有错误提示消息 我忠实地关注文档 但没有任何反应 我到处寻找 但什么也没有 如果你能帮我解决这个问题
  • java应用程序中与oracle的连接

    我已经下载了 oracle express 11g 版本并安装了它 现在我想从 java 应用程序连接它 这是我的连接代码 Class forName oracle jdbc driver OracleDriver newInstance
  • 在 Android @drawable 中查找图像的主色

    如果您使用 Windows 7 您就会明白为什么我要尝试查找图像中的主色 当您将鼠标悬停在任务栏中的某个程序上时 该特定程序的背景会根据图标中的主色发生变化 我注意到其他程序中也使用了这种技术 但我一时想不起来 我可以看到这对我用来开发应用
  • 通过 TCP 查看 h264 流

    我有一个用于无人机的小型基于 wifi 的 FPV 相机 我已经成功地使用 python 下载并保存 h264 文件 TCP IP 193 168 0 1 TCP PORT 6200 BUFFER SIZE 2056 f open stre
  • 访问基模板函数中派生类的成员函数

    我有一堂课叫DBDriver处理与数据库中给定表的通信 它的公共入口点是一个名为的函数模板execute query 它执行 SELECT 查询 调用此函数后 将执行一些数据库逻辑 然后用结果填充提供的容器 模板类型 这看起来像下面这样 c
  • 如何使用终端打开“-”虚线文件名?

    我尝试了 gedit nano vi leafpad 和其他文本编辑器 它无法打开 我尝试了 cat 和其他文件查找命令 我向你保证这是一个文件而不是目录 这种方法有很多误解 因为使用 作为参数指的是标准输入 标准输出 i e 开发 标准输
  • Angular CORS 简单请求通过 POST 中的授权标头触发预检

    根据文档 对于简单的请求 预检不应该发生 https developer mozilla org en docs Web HTTP Access control CORS https developer mozilla org en doc
  • PHPWord - 获取页数?

    我使用 PHPWord 的模板解析器来制作文档 然后使用命令行自动打印该文档 该文件必须在单页上 因为它是证书 并且要打印在特殊纸张上 我添加了人们的名字 这样名字较长的人就可以将一行放到两行上 然后将所有内容推到第二页上 PHPWord
  • SlidingWindows Python Apache Beam 复制数据

    问题 每次系统从带有滑动窗口的 pubsub 收到一条消息时 它都会被复制 The code Parse dictionary gt gt beam Map lambda elem elem Serial int elem Value wi
  • 我应该使用监听器还是观察者?

    我的 GUI 中有一个下拉框 它显示另一个类中 ArrayList 的内容 新对象可以添加到 GUI 中其他位置的 ArrayList 中 因此我需要知道它何时更新 以便刷新下拉菜单 据我所知 我的两个选择是扩展 ArrayList 类以允