当前位置: 首页 > news >正文

长沙做网站的公司尚硅谷培训机构官网

长沙做网站的公司,尚硅谷培训机构官网,wordpress web开发教程,永康网站建设专业公司⭐Java Builder模式:是Java设计模式之一,它属于对象创建型模式,是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 结论一:使用lombok的Data和Builder注解构建Java类的Builder简洁高效&am…

⭐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类的Builder
        • 1.3.2代码中的getCityInfoSuccess和getCityInfoFail是对builder封装使用
      • 1.4使用lombok的@Data和@Builder注解构建Java对象的Builder
        • 1.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包。

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version>
</dependency>
@Data
@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(success=true, msg=获取城市信息成功, cityId=20230328, cityName=杭州, cityDescribe=杭州是一个互联网城市)
City02Response获取成功: City02Response(success=true, msg=获取城市信息成功, cityId=20230328, cityName=杭州, cityDescribe=杭州是一个互联网城市)
City02Response获取失败: City02Response(success=false, msg=网络异常,无法获取信息, cityId=20230328, cityName=null, cityDescribe=null)

基于注解@Data和@Builder的Java对象,city03Response的Builder使用:
city03Response直接使用builder: City03Response(success=true, msg=获取城市信息成功, cityId=20230328, cityName=苏州, cityDescribe=工业城市)
city03Response获取成功: City03Response(success=true, msg=获取城市信息成功, cityId=20230328, cityName=苏州, cityDescribe=工业城市)
city03Response获取失败: City03Response(success=false, msg=网络异常,无法获取信息, cityId=20230328, cityName=null, cityDescribe=null)

普通Java类和Builder类分开场景的Builder使用:
city04Response获取成功:City04Response(success=true, msg=获取城市信息成功, cityId=20230328, cityName=宁波, cityDescribe=港口城市)

http://www.ds6.com.cn/news/77958.html

相关文章:

  • 北京企业网站建设公司公司seo
  • 外贸做的社交网站有哪些网站推广的方法和途径
  • 网站设计美工要怎么做网络推广有哪几种方法
  • 网站建设报价单ppt今天的新闻 最新消息
  • php 企业网站 后台图片上传seo优化信
  • 免费跨境电商平台入驻湖南seo服务
  • 医院建设网站意义昆明seo优化
  • 网站建设赠送seo百度app下载最新版
  • 做静态网站的参考文献seo搜索排名优化公司
  • 设计网站价格表完美日记网络营销策划书
  • 网站建设学习步骤五合一网站建设
  • 政府网站建设园林绿化营销型网站推广方案
  • 学生个人网页制作 模板银川网站seo
  • 做汽车团购网站搜索引擎广告形式有哪些
  • 做网站是用啥软件做的二十个优化
  • 网站建设杭州滨江优化设计答案
  • 做网站免责声明百度搜索量怎么查
  • 有没有免费做任务赚钱的网站seo排名工具给您好的建议
  • 摄影网站怎么做数据库免费注册
  • 找手工活带回家做的找工作哪个网站最靠谱网络营销推广策划书
  • 图展网站源码seo快速排名点击
  • 广东省建设工程规范文件网站seo课程培训要多少钱
  • 逆袭做富豪官方网站阿里大数据分析平台
  • 网站建设中 尽情期待百度seo优化
  • 免费的图库网站抚州seo外包
  • 石家庄做网站优化深圳百度国际大厦
  • 阿里云网站方案建设书网络营销运营方案
  • 保定手机网站制作郑州网站seo顾问
  • 教育培训网站制作阿里域名注册网站
  • 网站备案 子域名公司网站制作公司