专栏首页算法之名用Build来构建对象的写法 顶

用Build来构建对象的写法 顶

如果一个类的属性过多,用构造器来构建对象很难写,因此我们时用Build方式来构建对象。写法大致如下。

import java.io.Serializable;
import java.util.Date;

public class Log implements Serializable {
   private static final long serialVersionUID = 3355538580546591073L;

   private Long id;
   private String username;
   /** 模块 */
   private String module;
   /** 参数值 */
   private String params;
   private String remark;
   private Boolean flag;
   private Date createTime;

   public Log(Builder builder) {
      this.id = builder.id;
      this.username = builder.username;
      this.module = builder.module;
      this.params = builder.params;
      this.remark = builder.remark;
      this.flag = builder.flag;
      this.createTime = builder.createTime;
   }
   public Long getId() {
      return id;
   }

   public void setId(Long id) {
      this.id = id;
   }

   public String getUsername() {
      return username;
   }

   public void setUsername(String username) {
      this.username = username;
   }

   public String getModule() {
      return module;
   }

   public void setModule(String module) {
      this.module = module;
   }

   public String getParams() {
      return params;
   }

   public void setParams(String params) {
      this.params = params;
   }

   public String getRemark() {
      return remark;
   }

   public void setRemark(String remark) {
      this.remark = remark;
   }

   public Boolean getFlag() {
      return flag;
   }

   public void setFlag(Boolean flag) {
      this.flag = flag;
   }

   public Date getCreateTime() {
      return createTime;
   }

   public void setCreateTime(Date createTime) {
      this.createTime = createTime;
   }
   public static class Builder {
      private static Long id;
      private static String username;
      /** 模块 */
      private static String module;
      /** 参数值 */
      private static String params;
      private static String remark;
      private static Boolean flag;
      private static Date createTime;
      public Builder() {

      }
      public Builder id(Long id) {
         this.id = id;
         return this;
      }
      public Builder username(String username) {
         this.username = username;
         return this;
      }
      public Builder module(String module) {
         this.module = module;
         return this;
      }
      public Builder params(String params) {
         this.params = params;
         return this;
      }
      public Builder remark(String remark) {
         this.remark = remark;
         return this;
      }
      public Builder flag(Boolean flag) {
         this.flag = flag;
         return this;
      }
      public Builder createTime(Date createTime) {
         this.createTime = createTime;
         return this;
      }
      public Log build() {
         return new Log(this);
      }
   }
}

调用方法:

Log log =new Log.Builder().username(username).module(LogModule.LOGIN).remark(remark).createTime(new Date())
        .build();

这样我们就可以时用我们有需要的属性赋值,并且进行构建对象。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用netty 3的channelbuffer来重写序列化类

    我们都知道用java来序列化一个对象,需要用到ObjectOutputSteam来把对象写进一个字节流ByteOutputStream,然后把字节流转成字节数组...

    算法之名
  • RocketMQ事务消息代码样例 顶

    第三步,写一个你要执行的方法,比如你的本项目的一次数据库执行,或者其他业务代码。我这里要执行的是保存个人信息。

    算法之名
  • 使用JDK的观察者接口进行消息推送 顶

    观察者模式就是对对象内部的变化进行观察,当发生改变时做出相应的响应。代码样例见 设计模式整理 !

    算法之名
  • 首页JavaThymeleaf 模板引擎与Spring Boot

    1,Thymeleaf是什么 ? Thymeleaf 是一个Java类库,是一个xml/xhtml/html5的模板引擎,可以作为MVC的Web应用的Vie...

    cherishspring
  • dubbo中使用hystrix遇到ThreadLocal变量的上下文传递时问题分析

    在实际运行时,大多数情况下会出现 consumer 端放入的 traceId 和国际化变量在 provider 端取不到的情况。而且具体分析时发现,consum...

    开发架构二三事
  • Lombok介绍、使用方法和总结

    1 Lombok背景介绍 官方介绍如下: Project Lombok makes java a spicier language by adding 'han...

    猿人谷
  • 微信一次性订阅消息

    http请求方式: post https://api.weixin.qq.com/cgi-bin/message/template/subscribe?acc...

    Javen
  • Z.ExtensionMethods 一个强大的开源扩展库

    今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去看了一下,也都只是提...

    逸鹏
  • 聊聊maxwell的BinlogConnectorDiagnostic

    本文主要研究一下maxwell的BinlogConnectorDiagnostic

    codecraft
  • 聊聊maxwell的BinlogConnectorDiagnostic

    本文主要研究一下maxwell的BinlogConnectorDiagnostic

    codecraft

扫码关注云+社区

领取腾讯云代金券