中国人工智能城市竞赛
其中 getPerson()方法,可以用来根据业务逻辑获取Person有可能的对象(对当前例子来讲,如果Person不存在,返回Person的的特例NUllPerson),如果修改成这样,代码的可读性就会变的很强了。 使用Optional可以进行优化 空对象模式,它的弊端在于需要创建一个特例对象,但是如果特例的情况比较多,我们是不是需要创建多个特例对象呢,虽然我们也使用了面向对象的多态特性,但是,业务的复杂性如果真的让我们创建多个特例对象,我们还是要再三考虑一下这种模式,它可能会带来代码的复杂性。
对于上述代码,还可以使用Optional进行优化。 优化修改 这样的数据转化,可读性非常差,每个字段的判断,如果是空就设置为空字符串(“”) 换一种思维方式进行思考,我们是拿到Person这个类的数据,然后进行赋值操作(setXXX),其实是不关系Person的具体实现是谁的。
那我们可以创建一个Person子类: 小结 通过 空集合返回值,Optional,jsr 303,jsr 305这几种方式,可以让我们的代码可读性更强,出错率更低!
空对象模式 场景
来看一个DTO转化的场景,对象: 当然,这样写,要配合AOP的操作进行验证,但让spring已经提供了很好的集成方案,在此就不在赘述了。 2.文档性约束 在很多时候,我们会遇到遗留代码,对于遗留代码,整体性改造的可能性很小。 我们更希望通过阅读接口的实现,来进行接口的说明。 jsr 305规范,给了我们一个描述接口入参的一个方式(需要引入库 com.google.code.findbugs:jsr305):
可以使用注解: @Nullable @Nonnull @CheckForNull 进行接口说明。比如: (编辑:信阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |