本文共 2750 字,大约阅读时间需要 9 分钟。
在软件开发中,当我们需要构建复杂对象时,传统的构造函数和setter方法往往会导致代码冗长,难以维护。而Java的建造者模式(Builder Pattern)为我们提供了一种更简洁高效的解决方案,避免了繁琐的构造过程。
在实际项目中,我们经常需要创建具有多个属性的对象。传统的做法是使用构造函数或setter方法来设置属性值。然而,这种方式在参数多样、有默认值时会显得非常繁琐。例如,Result类的构造:
public class Result { private int code; private String message; private T data; public Result(int code, String message, T data) { this.code = code; this.message = message; this.data = data; } // setter方法 public void setCode(int code) { ... } public void setMessage(String message) { ... } public void setData(T data) { ... }} 使用方式也会因此变得繁琐:
// 方法一:全量构造函数Result result1 = new Result(200, "success", null);// 方法二:空构造函数加setterResult result2 = new Result();result2.setCode(200);result2.setMessage("success");result2.setData(""); 这种方式的缺点在于:
考虑一个常见的Result类:
public class Result{ private int code; private String message; private T data; public Result(int code, String message, T data) { this.code = code; this.message = message; this.data = data; } // setter方法 public void setCode(int code) { ... } public void setMessage(String message) { ... } public void setData(T data) { ... }}
在实际使用中,这种方式的痛点显而易见:
为了解决上述问题,我们可以为Result类添加一个建造者类Builder:
public static final class Builder{ private int code; private String message; private T data; public Builder() { // 初始化所有属性为默认值 } public Builder code(int val) { this.code = val; return this; } public Builder message(String val) { this.message = val; return this; } public Builder data(T val) { this.data = val; return this; } public Result build() { return new Result<>(code, message, data); }}
使用方式变得更加简洁:
Resultresult3 = new Result.Builder () .code(404) .message("failure") .build();Result result4 = Result.newBuilder() .code(404) .message("failure") .build();
为了进一步简化代码,可以使用Lombok的注解:
import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic class Result{ private int code; private String message; private T data;}
使用方式简化为:
Resultresult5 = Result.builder() .code(404) .message("failure") .build();
通过引入建造者模式,我们能够将对象的构建与其表示分离,简化了构造过程,使代码更加简洁易读。同时,结合Lombok的注解,可以进一步提升代码简洁性。在实际开发中,建造者模式广泛应用于需要灵活构造复杂对象的场景。
转载地址:http://ddhfk.baihongyu.com/