为什么要使用构造者模式
存在要创建的类,构造器参数过多,有些字段是必要的,有些事非必要的。它们之间还存在依赖关系,大小比较等。
1)如果直接new 对象,构造参数太多,字段有关系,不能保证每个参数都正确setter进去。
构造者模式的作用
就是为了解决以上问题的。
先是做各个字段的校验,和字段之间的依赖关系等。确保以上的创建对象的参数没问题后,才真正的创建需要的类。(延迟创建实例)
实现过程
如何实践构造者模式呢?
1, 创建要被构建的类,添加属性定义, 创建getter, 不要定义setter。
2, 创建构建者Builder 类, 是静态内部类。 public static class。字段和外部类差不多。
3, Builder 类 setter, 参数校验。[ setter 需要放回Builder对象this]
4, builder 方法。 验证各个参数之间的关系,放回被构建的类对象 new ResourcePool(this)
以下是一个例子:
public class ResourcePoolConfig {
private String name; // 名字
private int maxTotal; // 最大总数
private int maxIdle; // 最大数量
private int minIdle; // 最小数量
/**
* 私有化构造器,为了不让外界直接通过 new 的方式生成对象。
*
* 传递一个构建者对象进去,设置当前类的属性
* @param builder
*/
private ResourcePoolConfig(Builder builder){
// 外部类可以通过一个内部类实例,可以访问内部类的属性。
this.name = builder.name;
this.maxTotal = builder.maxTotal;
this.maxIdle = builder.maxIdle;
this.minIdle = builder.minIdle;
}</