如何制作一个论坛网站,河北一建考试最新消息,河北沧州最新消息今天,汕头企业网站建设价格⭐Java Builder模式#xff1a;是Java设计模式之一#xff0c;它属于对象创建型模式#xff0c;是将一个复杂对象的构建与它的表示分离#xff0c;使得同样的构建过程可以创建不同的表示。 结论一#xff1a;使用lombok的Data和Builder注解构建Java类的Builder简洁高效是Java设计模式之一它属于对象创建型模式是将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。 结论一使用lombok的Data和Builder注解构建Java类的Builder简洁高效推荐实际应用。 结论二手动编写Java类的Builder能够全貌理解Builder模式推荐试试。 结论三Java类的Builder模式最大好处就是构建对象时可以灵活构建需要的属性。 目录 1.1普通Java类.1.1.1普通Java对象 1.2普通Java类使用Data注解1.2.1普通Java类 1.3手动编写Java类的Builder(静态内部类)1.3.1手动编写Java类的Builder1.3.2代码中的getCityInfoSuccess和getCityInfoFail是对builder封装使用 1.4使用lombok的Data和Builder注解构建Java对象的Builder1.4.1使用Data和Builder注解1.4.2代码中的getCityInfoSuccess和getCityInfoFail是对builder封装使用 1.5普通Jave类和Builder类分开1.5.1普通Java类1.5.2普通Java类的Builder类 1.6测试 1.1普通Java类. 1.1.1普通Java对象
普通Java类一般有属性、set、get、toString方法。
public class City01Response implements Serializable {private boolean success;private String msg;private Long cityId;private String cityName;private String cityDescribe;public City01Response() {}public boolean isSuccess() {return success;}public void setSuccess(boolean success) {this.success success;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public Long getCityId() {return cityId;}public void setCityId(Long cityId) {this.cityId cityId;}public String getCityName() {return cityName;}public void setCityName(String cityName) {this.cityName cityName;}public String getCityDescribe() {return cityDescribe;}public void setCityDescribe(String cityDescribe) {this.cityDescribe cityDescribe;}Overridepublic String toString() {return City01Response( success success , msg msg , cityId cityId , cityName cityName , cityDescribe cityDescribe );}
}1.2普通Java类使用Data注解 1.2.1普通Java类
使用Data注解后普通Java类只有属性。set、get、toString方法由Data注解接管。使用方式等价。
Data
public class City01Response implements Serializable {private boolean success;private String msg;private Long cityId;private String cityName;private String cityDescribe;
}1.3手动编写Java类的Builder(静态内部类) 1.3.1手动编写Java类的Builder
本例内部类使用静态类实现build使用静态方法。普通Java类City02Response(1)编写普通Java类City02Response一般有属性、set、get、toString方法。(2)在普通Java类City02Response中编写一个内部类City02ResponseBuilder。(3)在普通Java类City02Response中实现一个builder方法创建一个内部类City02ResponseBuilder的对象。(4)在内部类City02ResponseBuilder中实现一个build方法返回普通Java类City02Response的对象。(5)在内部类City02ResponseBuilder中。为每个属性实现一个设置方法并且返回City02ResponseBuilder对象本身即返回this。
public class City02Response implements Serializable {private boolean success;private String msg;private Long cityId;private String cityName;private String cityDescribe;public static City02Response.City02ResponseBuilder builder() {return new City02Response.City02ResponseBuilder();}public static City02Response getCityInfoSuccess(Long cityID, String cityName, String cityDescribe) {return builder().success(true).msg(获取城市信息成功).cityId(cityID).cityName(cityName).cityDescribe(cityDescribe).build();}public static City02Response getCityInfoFail(Long cityID, String failMsg) {return builder().success(false).msg(failMsg).cityId(cityID).build();}public City02Response() {}public City02Response(boolean success, String msg, Long cityId, String cityName, String cityDescribe) {this.success success;this.msg msg;this.cityId cityId;this.cityName cityName;this.cityDescribe cityDescribe;}Overridepublic String toString() {return City02Response( success success , msg msg , cityId cityId , cityName cityName , cityDescribe cityDescribe );}public boolean isSuccess() {return success;}public void setSuccess(boolean success) {this.success success;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public Long getCityId() {return cityId;}public void setCityId(Long cityId) {this.cityId cityId;}public String getCityName() {return cityName;}public void setCityName(String cityName) {this.cityName cityName;}public String getCityDescribe() {return cityDescribe;}public void setCityDescribe(String cityDescribe) {this.cityDescribe cityDescribe;}public static class City02ResponseBuilder {private boolean success;private String msg;private Long cityId;private String cityName;private String cityDescribe;City02ResponseBuilder() {}public City02Response build() {return new City02Response(success, msg, cityId, cityName, cityDescribe);}public City02Response.City02ResponseBuilder success(final boolean success) {this.success success;return this;}public City02Response.City02ResponseBuilder msg(final String msg) {this.msg msg;return this;}public City02Response.City02ResponseBuilder cityId(final Long cityId) {this.cityId cityId;return this;}public City02Response.City02ResponseBuilder cityName(final String cityName) {this.cityName cityName;return this;}public City02Response.City02ResponseBuilder cityDescribe(final String cityDescribe) {this.cityDescribe cityDescribe;return this;}Overridepublic String toString() {return City02ResponseBuilder.City02Response( success success , msg msg , cityId cityId , cityName cityName , cityDescribe cityDescribe );}}
}1.3.2代码中的getCityInfoSuccess和getCityInfoFail是对builder封装使用
代码中的getCityInfoSuccess和getCityInfoFail是对builder封装应用。不是必须部分。
1.4使用lombok的Data和Builder注解构建Java对象的Builder 1.4.1使用Data和Builder注解
使用Data和Builder注解简化代码效果等价。需引入jar包。
dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version
/dependencyData
Builder
public class City03Response implements Serializable {private boolean success;private String msg;private Long cityId;private String cityName;private String cityDescribe;public static City03Response getCityInfoSuccess(Long cityID, String cityName, String cityDescribe) {return builder().success(true).msg(获取城市信息成功).cityId(cityID).cityName(cityName).cityDescribe(cityDescribe).build();}public static City03Response getCityInfoFail(Long cityID, String failMsg) {return builder().success(false).msg(failMsg).cityId(cityID).build();}
}1.4.2代码中的getCityInfoSuccess和getCityInfoFail是对builder封装使用
代码中的getCityInfoSuccess和getCityInfoFail是对builder封装应用。不是必须部分。
1.5普通Jave类和Builder类分开 1.5.1普通Java类
public class City04Response {private boolean success;private String msg;private Long cityId;private String cityName;private String cityDescribe;public City04Response(boolean success, String msg, Long cityId, String cityName, String cityDescribe) {this.success success;this.msg msg;this.cityId cityId;this.cityName cityName;this.cityDescribe cityDescribe;}public boolean isSuccess() {return success;}public void setSuccess(boolean success) {this.success success;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public Long getCityId() {return cityId;}public void setCityId(Long cityId) {this.cityId cityId;}public String getCityName() {return cityName;}public void setCityName(String cityName) {this.cityName cityName;}public String getCityDescribe() {return cityDescribe;}public void setCityDescribe(String cityDescribe) {this.cityDescribe cityDescribe;}Overridepublic String toString() {return City04Response( success success , msg msg , cityId cityId , cityName cityName , cityDescribe cityDescribe );}
}1.5.2普通Java类的Builder类
public class City04ResponseBuilder implements Serializable {private boolean success;private String msg;private Long cityId;private String cityName;private String cityDescribe;public City04ResponseBuilder setSuccess(boolean success) {this.success success;return this;}public City04ResponseBuilder setMsg(String msg) {this.msg msg;return this;}public City04ResponseBuilder setCityId(Long cityId) {this.cityId cityId;return this;}public City04ResponseBuilder setCityName(String cityName) {this.cityName cityName;return this;}public City04ResponseBuilder setCityDescribe(String cityDescribe) {this.cityDescribe cityDescribe;return this;}public City04Response build() {return new City04Response(success, msg, cityId, cityName, cityDescribe);}
}1.6测试
public class UseBuildUtils {public static void main(String[] args) {City02Response city02Response;System.out.println(原生的Builder的Java对象,City02Response的Builder使用:);city02Response City02Response.builder().success(true).msg(获取城市信息成功).cityId(20230328L).cityName(杭州).cityDescribe(杭州是一个互联网城市).build();System.out.println(City02Response直接使用builder: city02Response.toString());city02Response City02Response.getCityInfoSuccess(20230328L, 杭州, 杭州是一个互联网城市);System.out.println(City02Response获取成功: city02Response.toString());city02Response City02Response.getCityInfoFail(20230328L, 网络异常,无法获取信息);System.out.println(City02Response获取失败: city02Response.toString());City03Response city03Response;System.out.println(基于注解Data和Builder的Java对象,city03Response的Builder使用:);city03Response City03Response.builder().success(true).msg(获取城市信息成功).cityId(20230328L).cityName(苏州).cityDescribe(工业城市).build();System.out.println(city03Response直接使用builder: city03Response.toString());city03Response City03Response.getCityInfoSuccess(20230328L, 苏州, 工业城市);System.out.println(city03Response获取成功: city03Response.toString());city03Response City03Response.getCityInfoFail(20230328L, 网络异常,无法获取信息);System.out.println(city03Response获取失败: city03Response.toString());System.out.println(普通Java类和Builder类分开场景的Builder使用:);City04Response city04Response new City04ResponseBuilder().setSuccess(true).setMsg(获取城市信息成功).setCityId(20230328L).setCityName(宁波).setCityDescribe(港口城市).build();System.out.println(city04Response获取成功:city04Response.toString());}
}原生的Builder的Java对象,City02Response的Builder使用: City02Response直接使用builder: City02Response(successtrue, msg获取城市信息成功, cityId20230328, cityName杭州, cityDescribe杭州是一个互联网城市) City02Response获取成功: City02Response(successtrue, msg获取城市信息成功, cityId20230328, cityName杭州, cityDescribe杭州是一个互联网城市) City02Response获取失败: City02Response(successfalse, msg网络异常,无法获取信息, cityId20230328, cityNamenull, cityDescribenull) 基于注解Data和Builder的Java对象,city03Response的Builder使用: city03Response直接使用builder: City03Response(successtrue, msg获取城市信息成功, cityId20230328, cityName苏州, cityDescribe工业城市) city03Response获取成功: City03Response(successtrue, msg获取城市信息成功, cityId20230328, cityName苏州, cityDescribe工业城市) city03Response获取失败: City03Response(successfalse, msg网络异常,无法获取信息, cityId20230328, cityNamenull, cityDescribenull) 普通Java类和Builder类分开场景的Builder使用: city04Response获取成功:City04Response(successtrue, msg获取城市信息成功, cityId20230328, cityName宁波, cityDescribe港口城市)