在Spring当中,我们经常看到我们会用到这个模式。一个常用的例子就是在Mockmvc当中的ResultActions,用来测试Web Application 和 Web Services。值得一提的是,有一个开源框架叫Lambok,它把Builder pattern提升到另外一个层次,它提供了一个Annotation去封装了Builder Pattern的Builder,从而大大地简约了整个模式。
【why】那么我们首先谈谈为什么我们要建造者模式?
先看看以下两段代码,第一段是一位我带的实习生写的,他的任务是要写一段代码去构造一个Web Service 的 Header Object
Header header = new Header();
header.setClientId(SOAHeader.SOAP_CLIENT_ID);
header.setCorrelationId(SOAHeader.SOAP_CORRELATION_ID);
然后我们看看我问这位实习生,
1. How many attributes do we have in the Header Object? How many of them are optional?
在Header本身有多少个参数,其中有多少个是可选的?
2. Are you going to have more setter on your code? Setter itself is good, but less readable.
你是否需要写更多的setter去给那些可选的object复制。在我看来,setter是