我们正在使用 @Command 方法来触发任何方法,但是我们正在使用 @NotifyChange 方法来反射(reflect)类变量。
但是我们使用 @NotifyChange 代替
BindUtils.postNotifyChange(null, null, this.class, "*");
因此,哪种陈述有利于提高性能。
最佳答案
实际上,BindUtils
比@NotifyChanged
更强大
如果您将以相同的方式使用它,我认为不会有太大的性能差异。
唯一的不同是@NotifyChange
仅适用于 setter 和命令,并且可以从每种方法中调用BindUtils
。
现在,什么时候会有区别?
假设您有一个 list ,您可以从中得到什么:
public List<User> getUsers() {
return users;
}
假设我们在每个用户旁边都有按钮,并且该按钮会触发更改该用户的命令(例如阻止该用户)
我们可以做的是将
@notifyChanged("users")
放在zk中询问getUsers();
意味着什么如果我们使用
BindUtils
,则可以执行以下操作:BindUtils.postNotifyChanged(null,null,user,"*");
或者
BindUtils.postNotifyCHanged(null,null,user,"blocked");
即使我们在VM中没有该用户的 setter/getter ,该 setter/getter 仍然会执行,并且只有整个列表中的该用户会更新。
使用第一个命令将刷新所有数据,第二个命令将仅更新已阻止的数据。
现在,第二个并非总是可能的,因为您可能不知道要更新哪个字段或所有字段,但是仍然要更新1个用户而不是获取所有x个用户。