加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

腾讯事变近十年大佬:不是我冲击你!你也许真的不会写Java

发布时间:2019-07-02 01:44:01 所属栏目:建站 来源:程序员小姐
导读:文章焦点 着实,本不想把问题写的那么可怕,只是发明许多人干了几年 Java 往后,都自以为是一个不错的 Java 措施员了,可以拿着上万的人为都处鼓吹本身了,写这篇文章的目标并不是冷笑和我一样做 Java 的偕行们,只是但愿读者看到此篇文章后,可以和我一样

细心看一下 set 要领,这样的配置即是 chain 的 style,挪用的时辰,可以这样行使:

  1. Student student = new Student() 
  2.  .setAge(24) 
  3.  .setName("zs"); 

信托公道行使这样的链式代码,会更多的措施带来很好的可读性,那看一下假如行使 lombok 举办改进呢,请行使 @Accessors(chain = true),看如下代码:

  1. @Accessors(chain = true) 
  2. @Setter 
  3. @Getter 
  4. public class Student { 
  5.  private String name; 
  6.  private int age; 

这样就完成了一个对付 bean 来讲很友爱的链式操纵。

静态结构要领

静态结构要领的语义和简化水平真的高于直接去 new 一个工具。好比 new 一个 List 工具,已往的行使是这样的:

  1. List<String> list = new ArrayList<>(); 

看一下 guava 中的建设方法:

  1. List<String> list = Lists.newArrayList(); 

Lists 定名是一种约定(俗话说:约定优于设置),它是指 Lists 是 List 这个类的一个器材类,那么行使 List 的器材类去发生 List,这样的语义是不是要比直接 new 一个子类来的更直接一些呢,谜底是必定的,再好比假若有一个器材类叫做 Maps,那你是否想到了建设 Map 的要领呢:

  1. HashMap<String, String> objectObjectHashMap = Maps.newHashMap(); 

好了,假如你领略了我说的语义,那么,你已经向成为 Java 措施员更近了一步了。

再回过甚来看方才的 Student,许多时辰,我们去写 Student 这个 bean 的时辰,他会有一些必输字段,好比 Student 中的 name 字段,一样平常处理赏罚的方法是将 name 字段包装成一个结构要领,只有传入 name 这样的结构要领,才气建设一个 Student 工具。

接上上边的静态结构要领和必传参数的结构要领,行使 lombok 将变动成如下写法(@RequiredArgsConstructor 和 @NonNull):

  1. @Accessors(chain = true) 
  2. @Setter 
  3. @Getter 
  4. @RequiredArgsConstructor(staticName = "ofName") 
  5. public class Student { 
  6.  @NonNull private String name; 
  7.  private int age; 

测试代码:

  1. Student student = Student.ofName("zs"); 

这样构建出的 bean 语义是否要比直接 new 一个含参的结构要领(包括 name 的结构要领)要好许多。

虽然,看过许多源码往后,我想信托将静态结构要领 ofName 换成 of 会先的越发简捷:

  1. @Accessors(chain = true) 
  2. @Setter 
  3. @Getter 
  4. @RequiredArgsConstructor(staticName = "of") 
  5. public class Student { 
  6.  @NonNull private String name; 
  7.  private int age; 

测试代码:

  1. Student student = Student.of("zs"); 

虽然他如故是支持链式挪用的:

  1. Student student = Student.of("zs").setAge(24); 

这样来写代码,真的很简捷,而且可读性很强。

行使 builder

Builder 模式我不想再多表明白,读者可以看一下《Head First》(计划模式) 的制作者模式。

本日着实要说的是一种变种的 builder 模式,那就是构建 bean 的 builder 模式,着实首要的头脑是带着各人一路看一下 lombok 给我们带来了什么。

看一下 Student 这个类的原始 builder 状态:

  1. public class Student { 
  2.  private String name; 
  3.  private int age; 
  4.  public String getName() { 
  5.  return name; 
  6.  } 
  7.  public void setName(String name) { 
  8.  this.name = name; 
  9.  } 
  10.  public int getAge() { 
  11.  return age; 
  12.  } 
  13.  public void setAge(int age) { 
  14.  this.age = age; 
  15.  } 
  16.  public static Builder builder(){ 
  17.  return new Builder(); 
  18.  } 
  19.  public static class Builder{ 
  20.  private String name; 
  21.  private int age; 
  22.  public Builder name(String name){ 
  23.  this.name = name; 
  24.  return this; 
  25.  } 
  26.  public Builder age(int age){ 
  27.  this.age = age; 
  28.  return this; 
  29.  } 
  30.  public Student build(){ 
  31.  Student student = new Student(); 
  32.  student.setAge(age); 
  33.  student.setName(name); 
  34.  return student; 
  35.  } 
  36.  } 

挪用方法:

  1. Student student = Student.builder().name("zs").age(24).build(); 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读