【发布时间】:2012-08-23 12:53:58
【问题描述】:
我有称为“层次结构”的对象,基本上只是一个字符串列表,例如。 [1 2 3 4]。我还有一个名为 FormattedHierarchies 的对象,它们应该始终以用户希望它们表示的方式保持层次结构的格式化版本,例如(1-4) 或 {1,2,3,4}。
我的问题是这样的:
我想在层次结构发生更改时立即更新 FormattedHierarchy(例如,如果层次结构从 [1 2 3 4] 更改为 [1 2 3],则 FormattedHierarchy 应从 (1-4) 更改为 (1-3 ))。
谷歌搜索发现http://docs.oracle.com/javase/tutorial/uiswing/events/changelistener.html 但我的问题是:如果我想让 Hierarchy 实现 ChangeListener,它必须实现方法“stateChanged”。
类型层次结构必须实现继承的抽象方法 ChangeListener.stateChanged(ChangeEvent)
让 Hierarchy 创建一个新的 FormattedHierarchy 是不可行的,我也认为这不是好的类设计。这是因为层次结构随后会实现处理其格式的东西(尽管是以间接方式)。
这个问题有什么标准的或聪明的解决方案吗?
【问题讨论】:
-
为什么不直接使用标志(例如
isModified)? -
因为我希望自动更新更改,所以我宁愿有一个 isChanged 方法,只要在层次结构上使用 setter 就会调用它。它可能会产生我不知道或无法预见的影响 每当使用 setter 时让 setter 调用 isChanged 方法有什么缺点吗?
标签: java object-oriented-analysis