美文网首页
pojo类的优雅构建,@Builder与@Accessors的使

pojo类的优雅构建,@Builder与@Accessors的使

作者: simperLv | 来源:发表于2020-12-11 15:58 被阅读0次

对象的创建分法

  • new Object()
  • 工厂模式
  • 建造者模式

优劣性

  • 直接创建对象
    构造方法多个参数时无法明确含义,比如Object(String name, String phone)和Object(String name, String addr)
    当参数大于4个时,需要组合所有参数的构造方法,造成代码太大

  • 使用工厂模式
    可以通过定义方法newInstance和getInstance来确定单例还是多例,再则可以通过方法名来区别方法参数

  • 建造者模式
    支持链式表达式
    当多线程环境对共享变量进行初始化操作时,可能将未完全初始化的对象暴露出去造成安全问题,这是可以使用建造者模式来保证对象赋值时一定是初始化完成后。

Lombok的@Builder和@Accessors区别

  • @Builder
    @Builder就是基于建造者模式支持链式操作,但很多时候都是构造失血模式的Bean或者没有共享变量,这时候为了链式操作就新建一个builder是不是有点大材小用
    示例:实体类加上@Builder注解(目前更新为@SuperBuilder )
    'EmsUser emsUser = EmsUser.builder().mobile("").email("").build();
  • @Accessors
    @Accessors就可以解决上述的问题,支持链式操作,同时减少多余对象的创建,builder类元信息又可以减少
    示例:实体类加上@Accessors(chain = true)注解

EmsUser emsUser = new EmsUser().setEmail("").setMobile("");

使用@Accessors的时候可能会出现的坑(目前没遇到过)

有的开源反射工具包对对象进行浅拷贝时,获取set方法元信息时会判断方法返回值是否是void,这时候@Accessors就会出现异常

文章是直接搬运的,不过搬运的文章也是搬运的(也没注明来源,这不整尴尬了吗)

相关文章

  • pojo类的优雅构建,@Builder与@Accessors的使

    对象的创建分法 new Object() 工厂模式 建造者模式 优劣性 直接创建对象构造方法多个参数时无法明确含义...

  • 创造模式-建造者模式

    概述 建造者模式(Builder Pattern):将一个复杂对象的构建与表示分离,使构建过程能可以创建出不同的表...

  • 建造者模式(Builder模式)

    一、模式的定义与特点 建造者模式(Builder):指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以构建...

  • 建造者模式-java

    概念: 建造者模式是将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。一个 Builder 类...

  • struts2的三种写法

    1.Action类就是一个POJO类 什么是POJO类,POJO(PlainOrdinaryJavaObject)...

  • builder简单例子

    builder模式是 builder负责产生组件, 然后使用director进行组装。实现复杂对象的构建 与 它...

  • OkHttp 网络框架源码解析

    简单用法 流程图解 OkHttpClient Builder 构建方式,链式调用 dispatcher 分发基类,...

  • databinding学习

    构建环境 数据绑定布局文件 上面data标签里声明数据变量,数据类型可以是POJO类,也可以是JavaBeans类...

  • 构建者模式

    代码 输出 总结 构建者模式将构建复杂对象的逻辑剥离开来,放在单独的实现了builder接口的concrete类里...

  • 设计模式之建造者 Builder

    重点 适用于构建复杂的类,属性很多的类 简化版UML 一般Builder类会作为Product的静态内部类

网友评论

      本文标题:pojo类的优雅构建,@Builder与@Accessors的使

      本文链接:https://www.haomeiwen.com/subject/zwijgktx.html