Java为什么要用pojo,java – POJO有什么优势?

取自维基百科:

POJO is an acronym for Plain Old Java Object. The name is used to

emphasize that a given object is an ordinary Java Object, not a

special object.

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

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

我可以考虑使用getter和setter的原因有很多:

>您可能只想获得一些值(I.E.只读值).对于字段,客户端可以直接获取和设置值.如果字段被标记为final,则可以将其设置为只读,尽管这并不总是保证它们是不可变的(参见第9点).

> Getter& setter方法允许您更改基础数据类型,而不会破坏类的公共接口,这使得它(和您的应用程序)更加健壮并且能够适应变化.

>您可能希望调用其他一些代码,例如在获取或更改值时发出通知.您目前的班级无法做到这一点.

>您正在暴露您的类的实现,在某些情况下可能存在安全风险.

> Java bean是围绕POJO设计的,这意味着如果您的类没有实现,那么某些工具和库不能使用它们,以期您的类遵循这些完善的原则.

>您可以公开不受字段I.E支持的值.计算值,例如getFullName(),它是由字段支持的getFirstName()和getLastName()的串联.

>您可以向setter方法添加验证,以确保传递的值正确.这可确保您的类始终处于有效状态.

>您可以在getter和setter中设置断点,以便在获取或更改值时调试代码.

>如果字段是对象(I.E.不是基本类型),则可以通过其他对象修改类的内部状态,这可能导致错误或安全风险.您可以通过返回对象的副本来保护POJO的getter中的这种情况,以便客户端可以处理数据而不会影响对象的状态.请注意,拥有最终字段并不总能保护您免受此类攻击,因为客户端仍然可以对正在引用的对象进行更改(假设该对象本身是可变的),一旦设置了字段,您就无法将字段指向不同的引用.

是的,通过方法调用访问或设置值可能比直接字段访问慢,但差别几乎不明显,它肯定不会成为程序的瓶颈.

虽然优点很明显,但这并不意味着吸气剂和制定者是银弹.在设计真实世界,强大的可扩展类时,需要考虑许多“问题”.

在设计具有getter和setter的类时,This回答一个非常相似的问题会详细考虑一些注意事项.虽然根据您正在设计的班级类型,建议可能更相关.一个类,它构成大型系统中API的一部分,而不是简单的数据传输对象.

另请注意,在某些情况下,具有直接字段的类可能是有利的,例如当速度必不可少或内存有限时,尽管只应在分析代码并发现它实际上是瓶颈之后才考虑这一点.

另外要小心,你不仅要将所有字段包装在getter和setter中,因为这实际上缺少封装点.

This回答提供了使用getter和setter在JavaBean样式对象上选择POJO的原因的一个很好的总结.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值