用Build来构建对象的写法

原创
2018/07/18 16:55
阅读数 3.7K

如果一个类的属性过多,用构造器来构建对象很难写,因此我们时用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 评论
0 收藏
0
分享
返回顶部
顶部