在新建对象时,若需要对大量可选参数进行赋值,最常见的做法是JavaBeans模式,即调用一个无参构造方法创建对象,然后调用setter方法来设置每个必要的参数,以及每个相关的可选参数
这种模式需要的代码语句繁琐,而且这种做法阻止了把类做成不可变的可能(不可变的类没有set方法,且创建之后没有任何可以更改属性的方法)。更加简洁的一种方式是通过多个构造方法去新建对象。
但是这样,就会有多个不同的构造方法,当参数越来越多时,这种方式就会使类的结构变得臃肿,难以维护,在使用时也需要去逐个理解每种构造方法的参数意义
有没有一种更好的创建大量可选参数对象的方式?答案是Builder模式。
具体思路,在bean里面再建立一个私有静态类,拥有bean的所有的属性,
然后里面有所有属性的set方法,并返回this 这个静态类对象本身。
最后有一个build方法,这里调用bean的私有构造方法,将私有静态类对象的this传进去,最后一一赋值。
使用的时候,就
ReceiveListQueryDTO receiveListQueryDTO=new ReceiveListQueryDTO.Builder()
.isAll(Boolean.TRUE)
.itemCode("asdasd")
.page(1)
.pageSize(123)
.build();
这样使用 ,灵活了很多。
package com.souche.sfs.server.mo