如何处理DataModel中互连对象的删除

时间:2019-06-04 20:38:51

标签: java javafx data-modeling

我的应用程序中有一个紧密关联的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很好地集成了(可以用来向用户显示已删除的内容,等等),但是它们对我来说也不是“正确的”。 有更好的解决方案,或者甚至是常见的做法吗?

预先感谢

关注

0 个答案:

没有答案