Builder设计模式
工厂模式和构造函数有一个很大的限制就是:无法创建大量可选参数的对象。针对这种情况,常规的做法往往是要使用大量的构造函数来解决对象的构造问题。Builder模式针对的就是这个问题。
调用方先调用Builder类的构造函数并把必选的参数都传递给这个构造函数。然后调用方陆续调用Builder的其他可选参数。最后调用Builder类的builder方法返回所需构造的类的实例。下面是一个Builder模式的示例。
public class Customer { private final String name; private final String surname; private final int age; private final String address; private final String email; public static class Builder { //Mandatory parameters private String name; private String surname; //Optional parameters private int age; private String address; private String email; public Builder(String name, String surname) { this.name = name; this.surname = surname; } public Builder age(int val) { age = val; return this; } public Builder address(String val) { address = val; return this; } public Builder email(String val) { email = val; return this; } public Customer build() { return new Customer(this); } } private Customer(Builder builder) { name = builder.name; surname = builder.surname; age = builder.age; address = builder.address; email = builder.email; }}
调用方的代码如下
Customer customer = new Customer.Builder("John", "Doe").age(25).email("johndoe@gmail.com").build();
另外还可以在各个方法中加入验证信息,从而保证对象的有效性。
参考资料
http://onjavahell.blogspot.com/2009/07/introducing-builder-design-pattern.html
