POJO的优点是什么?

POJO的优点是什么?,第1张

POJO的优点是什么?

摘自维基百科:

POJO是Plain Old Java Object的首字母缩写。该名称用于强调给定对象是普通Java对象,而不是特殊对象。

POJO通常很简单,因此不会依赖于其他库,接口或注释。这增加了可以在多种项目类型(Web,桌面,控制台等)中重用的机会。

正如有人已经在评论中指出的那样,从技术上讲,您的对象已经是POJO了,但是您已经特别询问了类似于JavaBeans的getter和setter。

我可以想到使用getter和setter的多种原因:

  1. 您可能只想 获取 一些值(IE只读值)。使用字段,客户端可以直接获取和设置值。如果字段标记为final,则可以将它们设置为只读,尽管这并不总是保证它们是不变的(请参见第9点)。
  2. 使用Getter和setter方法,您可以在不破坏类的公共接口的情况下更改基础数据类型,这使它(和您的应用程序)对更改更健壮和灵活。
  3. 您可能需要调用其他代码,例如在获取或更改该值时引发通知。您当前的课程无法做到这一点。
  4. 您正在暴露类的实现,在某些情况下,这可能会带来安全风险。
  5. Java bean是围绕POJO设计的,这意味着如果您的类未实现为一个类,则某些工具和库将无法使用它们,它们期望您的类遵守这些公认的原则。
  6. 您可以公开 不由 字段支持的值IE计算的值,例如是字段
    getFullName()
    的串联
    getFirstName()
    getLastName()
    由字段支持的值。
  7. 您可以向setter方法添加验证,以确保传递的值正确。这样可以确保您的班级始终处于有效状态。
  8. 您可以在getter和setter中设置一个断点,以便在获取或更改值时调试代码。
  9. 如果该字段是一个对象(即,IE不是原始类型),则您的类的内部状态可以被其他对象修改,这可能导致错误或安全风险。您可以通过返回对象的 副本 在POJO的getter中防止这种情况的发生,以便客户端可以使用数据而不会影响对象的状态。请注意,拥有最终字段并 不能 总是保护您免受此类攻击,因为 客户端仍然可以对被引用的对象进行更改 (假设对象本身是可变的),一旦设置了该字段,就无法将其指向 其他 引用。

是的,通过方法调用访问或设置值可能比直接字段访问要慢,但是这种区别几乎没有引起注意,并且肯定不会成为程序的瓶颈。

尽管优势显而易见,但这并不意味着吸气剂和吸气剂是万能的。设计现实世界中强大的可伸缩类时,需要考虑许多“陷阱”。

这个非常相似的问题的答案在设计具有getter和setter方法的类时会详细考虑一些注意事项。尽管根据类的类型,建议可能更相关,但是您正在设计EG,该类是大型系统中与简单数据传输对象相反的API的一部分。

还要注意,在某些情况下,具有直接字段的类可能是有利的,例如在速度至关重要或内存有限的情况下,尽管
只有在对代码进行性能分析并发现它实际上是瓶颈之后才考虑使用

还请注意,您不只是将 所有 字段都包装在getter和setter中,因为这确实缺少封装的要点。

这个答案很好地总结了在具有getter和setter的JavaBean样式对象上选择POJO的原因。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4945513.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-13
下一篇2022-11-13

发表评论

登录后才能评论

评论列表(0条)

    保存