zoukankan      html  css  js  c++  java
  • @Builder与@Accessors的优劣对比(搬运)

    一、对象的创建分法

    new Object()

    工厂模式

    建造者模式

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

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

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

    三、Lombok的@Builder和@Accessors区别
    3.1 @Builder
    @Builder就是基于建造者模式支持链式操作,但很多时候都是构造失血模式的Bean或者没有共享变量,这时候为了链式操作就新建一个builder是不是有点大材小用
    示例:实体类加上@Builder注解(目前更新为@SuperBuilder )

    EmsUser emsUser = EmsUser.builder().mobile("").email("").build();

    3.2 @Accessors
    @Accessors就可以解决上述的问题,支持链式操作,同时减少多余对象的创建,builder类元信息又可以减少
    示例:实体类加上@Accessors(chain = true)注解

    EmsUser emsUser = new EmsUser().setEmail("").setMobile("");
  • 相关阅读:
    MySQL学习(十二)
    MySQL学习(十一)
    MySQL学习(十)
    MySQL学习(九)
    MySQL学习(八)
    hlg1600线性代数中的矩阵问题【区间dp】
    HDU1556Color the ball【标号法||树状数组】
    hlg1481 Attack of the Giant n-pus【二分+二分图】
    0918
    20140913
  • 原文地址:https://www.cnblogs.com/liheng2233/p/14751499.html
Copyright © 2011-2022 走看看