首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PropertyModel还是Serializable对象?

PropertyModel还是Serializable对象?
EN

Stack Overflow用户
提问于 2012-03-05 23:36:38
回答 1查看 172关注 0票数 0

哪种方法更好?:

代码语言:javascript
复制
add(new Label("label", new PropertyModel<String>(cat, "name")));

代码语言:javascript
复制
add(new Label("label", cat.getName()));

我试着找到任何关于比较的信息..但是找不到任何东西,我怎么理解第一种方法是用于读/写逻辑,第二种是用于只读逻辑,(如果我不正确,请给我写信)。但是对于只读逻辑,哪个更好呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-06 04:15:14

它们在功能上是不同的。

第一个说明:每当重新呈现此组件时,请刷新该值。第二个选项是:显示创建时的值。

你需要哪一个?如果您想要一个动态刷新的标签,您别无选择,它是PropertyModelCompoundPropertyModel (请参阅后面)。

如果希望它保持不变,即使底层对象发生了变化,也不能使用PropertyModels。

但是,如果您绝对确定cat.getName()永远不会改变,因此两个版本的行为是相同的,那么我个人不会使用PropertyModel,原因有三:

  1. 它打破了封装:在没有getter的情况下,它将尝试访问私有字段本身。正如@Jesse指出的那样,
  2. 指出,这是“神奇的”。如果你重构你的类并重命名你的字段,你的PropertyModel将会崩溃。
  3. 这并不容易阅读或维护。诚然,这也不是很难,但是当你没有从中得到任何东西的时候,为什么还要添加任何不必要的复杂性呢?如果你把cat.getName()放在那里,你可以在你的集成开发环境中“点击”,你的标签将会出现在搜索getName()方法的所有调用中,等等。

如果有许多组件引用同一对象的字段,则可以考虑使用CompoundPropertyModels,尽管仍然存在问题1和2,但它会使代码看起来干净得多。

但是,如果您有三个或更少的类似组件,并且不需要动态模型,则只需使用无模态格式。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9569390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档