我们使用 @Command 方法触发任何方法,但我们使用 @NoifyChange 方法来反映类变量。 但是,我们使用
取代 @NotifyChangeBindUtils.postNotifyChange(null, null, this.class, "*");
因此哪种陈述有利于提高绩效。
答案 0 :(得分:4)
实际上,BindUtils
可能比@NotifyChanged
更强大
如果你要以同样的方式使用它,我认为不会有很大的性能差异。
唯一的区别是@NotifyChange
仅适用于setter和命令,并且可以从每个方法调用BindUtils
。
现在,何时会有差异?
假设你有一个列表,你得到了这个:
public List<User> getUsers() {
return users;
}
假设我们在每个用户旁边都有按钮,按钮会触发一个更改该用户的命令(比如阻止该用户)
我们可以做的是将@notifyChanged("users")
置于zk中,这将意味着getUsers();
如果我们使用BindUtils
,我们可以执行以下操作:
BindUtils.postNotifyChanged(null,null,user,"*");
或
BindUtils.postNotifyCHanged(null,null,user,"blocked");
即使我们的VM中没有针对该用户的getter,仍然会执行该用户,并且只有整个列表中的该用户才会更新。 使用第一个命令刷新所有数据,第二个命令仅更新阻止。 现在第二个并不总是可能的,因为可能你不知道哪个字段或所有字段都被更新但仍然更新1个用户而不是获得所有x个用户。
答案 1 :(得分:0)
在我把这个问题放在这里之前看看:
Is it possible use @NotifyChange instead of BindUtils.postNotifyChange?
我个人建议使用特定变量而不是&#34; *&#34;而且表现不佳BindUtils.postNotifyChange(null, null, this.class, "*");
BindUtils
和@NotifyChange
之间的基本区别:
BindUtils
只占用一个属性,而@NotifyChange
一次只占用多个属性。