构建者模式

77 阅读2分钟

废话少说,先看概念🙌

官方概念:构建者模式是一种创建型设计模式,它允许您逐步构造复杂对象。该模式的主要思想是将对象的构建过程与其表示分离,以便相同的构建过程可以创建不同的表示

说人话:就是我们创建一个对象,可以按照自己的需求来定制,逐步将对象创建出来

大师说过:如果类的属性之间有一定的依赖关系或者约束条件(源自设计模式之美),那么就可以考虑使用 Builder 设计模式

why?😭

因为通过构建者模式,我们可以逐步构建对象,并在每一步中处理属性之间的依赖关系,确保对象在构建完成时符合特定的约束条件,可以使其代码更易维护,也提高了对象构建过程的灵活性

直接实践,学废这个就可以了👌

比如我想使用构建者模式创建HttpParameters,该怎么设计和实现

如果之前没接触过,直接看下面代码:(有点头疼,你忍一下)

 @Getter
 public class HttpParameters {
     private Builder builder;
     public static Builder newBuilder() { return new Builder(); }
     private HttpParameters(Builder builder) { this.builder = builder; }
 ​
     @Getter
     public static class Builder {
         private String url;
         private Object parameter;
         private String httpType;
         public Builder parameter(Object parameter) { this.parameter = parameter; return this;}
         public Builder url(String url) { this.url = url; return this; }
         public Builder httpType(String httpType) { this.httpType = httpType; return this; }
         public HttpParameters build() {
             if (StringUtils.isBlank(url)) {throw new RuntimeException("URL不允许为空 "); }
             // ...
             return new HttpParameters(this);
         }
     }
 }

来解释:你看HttpParameters中有一个私有属性:builder,我们是通过完善builder然后最后赋值给HttpParameters来实现的,而且它有一个静态方法是newBuilder(),我们直接使用HttpParameters来调用它的方法:newBuilder()

 HttpParameters httpParameters = HttpParameters.newBuilder()

恭喜😘

完成了构建者模式最重要的一步:通过调用类的静态方法,接受返回的内部builder实例,然后通过逐步完善这个实例的属性来一步步构建

怎么做呢?很聪明,估计你已经会了💕

来看代码:

 HttpParameters httpParameters = HttpParameters.newBuilder()
     .url("https://example.com/api")
     .parameter(someParameter)
     .httpType("GET")
     .build();

没错,实际开发中常见的链式调用,稍等,为什么支持呢?

看上面代码,我们接收到builder实例后,在set属性后,返回值是什么???

没错是this,它本身,所以你每次调用完set设值后,它返回的还是一个它的实例,可以接着赋值

好家伙,没完了是吧!😢

怎么结束呢?

是的,最后想结束了,调用一下这个实例的 build()方法,里面你可以写一些条件处理

到此结束!有点优雅,发明设计模式的人真是个天才😭

关注我,跟着我入行Java,打怪升级🙌🙌🙌