04.建立型————建立者模式

package Create.d.Builder;

//業務接口
public interface Tax {
	void calcTax();
}

  

package Create.d.Builder;

//業務接口
public interface Salary {
	void calcSalary();
}

  

package Create.d.Builder;

//業務實現類
public class HeBeiTax implements Tax {

	@Override
	public void calcTax() {
		// TODO Auto-generated method stub
		System.out.println("開始計算河北子公司的稅收!");
	}

}

  

package Create.d.Builder;

//業務實現類
public class HeBeiSalary implements Salary {

	@Override
	public void calcSalary() {
		// TODO Auto-generated method stub
		System.out.println("開始計算河北子公司的薪資!");
	}

}

  

package Create.d.Builder;

//業務實現類
public class GuangDongTax implements Tax {

	@Override
	public void calcTax() {
		// TODO Auto-generated method stub
		System.out.println("開始計算廣東子公司的稅收!");
	}

}

  

package Create.d.Builder;

//業務實現類
public class GuangDongSalary implements Salary {

	@Override
	public void calcSalary() {
		// TODO Auto-generated method stub
		System.out.println("開始計算廣東子公司的薪資!");
	}

}

  

package Create.d.Builder;

//工廠接口
public interface Factory {
  Salary createSalary();
  Tax createTax();
}

  

package Create.d.Builder;

//業務實現類工廠類
public class HeBeiFactory implements Factory {

	@Override
	public Salary createSalary() {
		// TODO Auto-generated method stub
		return new HeBeiSalary();
	}

	@Override
	public Tax createTax() {
		// TODO Auto-generated method stub
		return new HeBeiTax();
	}

}

  

package Create.d.Builder;

//業務實現類工廠類
public class GuangDongFactory implements Factory {

	@Override
	public Salary createSalary() {
		// TODO Auto-generated method stub
		return new GuangDongSalary();
	}

	@Override
	public Tax createTax() {
		// TODO Auto-generated method stub
		return new GuangDongTax();
	}

}

  

package Create.d.Builder;


//建立者類
public class Builder {
		Factory fa;
		public Builder() {
			super();
		}
		
		public Builder(Factory fa) {
			super();
			this.fa = fa;
		}
		
		//封裝業務實現類調用
		public void build(){
			Salary sa = fa.createSalary();
			Tax tax = fa.createTax();
			sa.calcSalary();
			tax.calcTax();
		}
		
		
}

  

package Create.d.Builder;

//業務調用類
public class Client {
public static void main(String[] args) {
	Builder builder = new Builder(new HeBeiFactory());
	builder.build();
	
	builder =  new Builder(new GuangDongFactory());
	builder.build();
	
	
}
}

 

 

優勢:客戶端再也不負責對象的建立和組裝,而是把這個任務交給具體的建立類和組裝類,只負責對對象的調用。java

缺點: 若是產品之間差別很是大,須要編寫多個建立者類才能實現,此時應考慮使用同工廠模式一同使用,效果更好。ide

相關文章
相關標籤/搜索