首页 > 设计模式 > Builder设计模式

Builder设计模式

2009年9月8日 admin 发表评论 阅读评论

工厂模式和构造函数有一个很大的限制就是:无法创建大量可选参数的对象。针对这种情况,常规的做法往往是要使用大量的构造函数来解决对象的构造问题。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

分类: 设计模式 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.