我的应用程序中有一个紧密关联的DataModel。
例如,现在我有一件事是Foo
类
public class Foo {
StringProperty nameProperty;
// ...
public void delete() {
// ...
}
}
我现在有一个名为FooReference
的类,该类用于表示对用户可以在应用程序中设置的类Foo的引用。上这堂课的原因将很快显现出来。
我正在使用JavaFX,因此我的数据模型依赖于可自我更新的属性。 Foo包含一个nameProperty
,用于在应用程序中显示Foo。每当更改此nameProperty
时,我都希望通知该应用程序。如果我只是将Foo传递出去,这将不起作用,因为Foo本身无法产生ChangeEvent。
现在出现了问题:删除Foo时如何通知FooReference,以便清除其值?
我曾经有过一个幼稚的方法,就是在调用List<Runnables deletionHandlers
时调用一个Foo.delete()
。然而,这似乎是低于标准的。如果可以避免,我也不想使用EventSystem。
我的最后一个想法是使用BooleanProperty deletedProperty
,该属性在调用Foo.delete
时会被切换,其他所有人都可以收听。
我真的不喜欢那些主意。侦听器引起许多lambda的使用,这些lambda会消耗内存和性能,以及多线程环境带来的一些额外复杂性。正如我所说,我希望避免使用EventSystem,主要是出于个人原因。属性似乎与程序的其余部分非常一致,并且与JavaFX很好地集成了(可以用来向用户显示已删除的内容,等等),但是它们对我来说也不是“正确的”。 有更好的解决方案,或者甚至是常见的做法吗?
预先感谢
关注