加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

腾讯事变近十年大佬:不是我冲击你!你也许真的不会写Java

发布时间:2019-07-02 01:44:01 所属栏目:建站 来源:程序员小姐
导读:文章焦点 着实,本不想把问题写的那么可怕,只是发明许多人干了几年 Java 往后,都自以为是一个不错的 Java 措施员了,可以拿着上万的人为都处鼓吹本身了,写这篇文章的目标并不是冷笑和我一样做 Java 的偕行们,只是但愿读者看到此篇文章后,可以和我一样

这样的 builder 代码,让我是在恶心难熬,于是我规划用 lombok 重构这段代码:

  1. @Builder 
  2. public class Student { 
  3.  private String name; 
  4.  private int age; 

挪用方法:

  1. Student student = Student.builder().name("zs").age(24).build(); 

署理模式

正如我们所知的,在措施中挪用 rest 接口是一个常见的举动举措,假如你和我一样行使过 spring 的 RestTemplate,我信托你会我和一样,对他抛出的非 http 状态码非常切齿腐心。

以是我们思量将 RestTemplate 最为底层包装器举办包装器模式的计划:

  1. public abstract class FilterRestTemplate implements RestOperations { 
  2.  protected volatile RestTemplate restTemplate; 
  3.  protected FilterRestTemplate(RestTemplate restTemplate){ 
  4.  this.restTemplate = restTemplate; 
  5.  } 
  6.  //实现RestOperations全部的接口 

然后再由扩展类对 FilterRestTemplate 举办包装扩展:

  1. public class ExtractRestTemplate extends FilterRestTemplate { 
  2.  private RestTemplate restTemplate; 
  3.  public ExtractRestTemplate(RestTemplate restTemplate) { 
  4.  super(restTemplate); 
  5.  this.restTemplate = restTemplate; 
  6.  } 
  7.  public <T> RestResponseDTO<T> postForEntityWithNoException(String url, Object request, Class<T> responseType, Object... uriVariables) 
  8.  throws RestClientException { 
  9.  RestResponseDTO<T> restResponseDTO = new RestResponseDTO<T>(); 
  10.  ResponseEntity<T> tResponseEntity; 
  11.  try { 
  12.  tResponseEntity = restTemplate.postForEntity(url, request, responseType, uriVariables); 
  13.  restResponseDTO.setData(tResponseEntity.getBody()); 
  14.  restResponseDTO.setMessage(tResponseEntity.getStatusCode().name()); 
  15.  restResponseDTO.setStatusCode(tResponseEntity.getStatusCodeValue()); 
  16.  }catch (Exception e){ 
  17.  restResponseDTO.setStatusCode(RestResponseDTO.UNKNOWN_ERROR); 
  18.  restResponseDTO.setMessage(e.getMessage()); 
  19.  restResponseDTO.setData(null); 
  20.  } 
  21.  return restResponseDTO; 
  22.  } 

包装器 ExtractRestTemplate 很美满的变动了非常抛出的举动,让措施更具有容错性。在这里我们不思量 ExtractRestTemplate 完成的成果,让我们把核心放在 FilterRestTemplate 上,“实现 RestOperations 全部的接口”,这个操纵绝对不是一时半会可以写完的,其时在重构之前我险些写了半个小时,如下:

  1. public abstract class FilterRestTemplate implements RestOperations { 
  2.  protected volatile RestTemplate restTemplate; 
  3.  protected FilterRestTemplate(RestTemplate restTemplate) { 
  4.  this.restTemplate = restTemplate; 
  5.  } 
  6.  @Override 
  7.  public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables) throws RestClientException { 
  8.  return restTemplate.getForObject(url,responseType,uriVariables); 
  9.  } 
  10.  @Override 
  11.  public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException { 
  12.  return restTemplate.getForObject(url,responseType,uriVariables); 
  13.  } 
  14.  @Override 
  15.  public <T> T getForObject(URI url, Class<T> responseType) throws RestClientException { 
  16.  return restTemplate.getForObject(url,responseType); 
  17.  } 
  18.  @Override 
  19.  public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables) throws RestClientException { 
  20.  return restTemplate.getForEntity(url,responseType,uriVariables); 
  21.  } 
  22.  //其他实当代码略。。。 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读