多个构造器参数要考虑使用构建器模式(Builder模式)

public class BuilderPattern {
	
	private final String name;
	private final String category;
	private final int size;
	private final int code;
	
	private BuilderPattern(Builder builder) {
		this.name = builder.name;
		this.category = builder.category;
		this.size = builder.size;
		this.code = builder.code;
	}
	
	public static class Builder {
		//required parameters
		private final String name;
		private final String category;
		//optional parameters
		private int size = 0;
		private int code = 0;
		
		public Builder(String name, String category) {
			this.name = name;
			this.category = category;
		}
		
		public Builder size(int size) {
			this.size = size;
			return this;
		}
		public Builder code(int code) {
			this.code = code;
			return this;
		}
		
		public BuilderPattern build() {
			return new BuilderPattern(this);
		}
	}
	
	@Override public String toString() {
		return "name=" + this.name + ",category=" + this.category + ",size=" + this.size + ",code=" + this.code;
	}
	public static void main(String[] args) {
		
		BuilderPattern bp = new BuilderPattern.Builder("nike", "鞋类").code(1001).size(40).build();
		System.out.println(bp);
	}
}

 * 构造器和静态工厂方法有个共同的局限性:它们都不能很好的扩张到大量的可选参数。
   通常使用JavaBean来包装参数,缺点是在构造过程中JavaBean可能出于不一致的状态。类无法仅仅

   通过检验构造器参数的有效性来保证一致性。
   如果类的构造器或者静态工厂方法中具有多个参数,设计这种类时,Builder模式就是不错的选择,

   特别是大多数参数可选时。与传统的重叠构造器相比,使用Builder模式的客户端将更易于阅读和编写,

   构造器也比JavaBean更安全。

猜你喜欢

转载自jaesonchen.iteye.com/blog/2286872