1. 程式人生 > >路一步步走>> 設計模式三:Builder-建造者(生成器)

路一步步走>> 設計模式三:Builder-建造者(生成器)

package com.test.DPs.ChuangJian.Builder;

/**
 * 建立型:Builder-建造者(生成器)
 */
public class Builder{
	static class Student{
		String name = null;
		String sex = null;
		String school = null;
		int number = -1;
		int age = -1;

		/**
		 * 建造者(生成器)-Builder
		 * 用途:講一個複雜物件的構建與他的表示分離,使得同樣的構建過程可以建立不同的表示。
		 * 
		 * 理解
		 * 區分物件構建之前與之後初始化。類設計,而非客戶端。。構建之前,將物件構建過程與表示分離。
		 */
		static class StudentBuilder{
			String name = null;
			String sex = null;
			String school = null;
			int number = -1;
			int age = -1;
			public StudentBuilder setName(String name){
				this.name = name;
				return this;
			}
			public StudentBuilder setSex(String sex){
				this.sex = sex;
				return this;
			}
			public StudentBuilder setSchool(String school){
				this.school = school;
				return this;
			}
			public StudentBuilder setNumber(int number){
				this.number = number;
				return this;
			}
			public StudentBuilder setAge(int age){
				this.age = age;
				return this;
			}	
			
			public Student build(){
				return new Student(this);
			}
		}
		public Student(StudentBuilder builder){
			this.age = builder.age;
	        this.name = builder.name;
	        this.number = builder.number;
	        this.school = builder.school ;
	        this.sex = builder.sex ;
		}
	}
	public static void main(String[] args){
		Student a = new Student.StudentBuilder().setAge(12).setName("Jack").build();
		Student b = new Student.StudentBuilder().setSchool("sc").setSchool("Mian").setName("Li").build();
	}
}