1. 程式人生 > >java (介面)interface 工廠方法(FactoryMethod)

java (介面)interface 工廠方法(FactoryMethod)

java (介面)interface 工廠方法(FactoryMethod)

1. 概述:

定義一個用於建立物件的介面,讓子類決定例項化哪一個類。FactoryMethod使一個類的例項化延遲到其子類。

2. 適用性:

  1. 當一個類不知道它所必須建立的物件的類的時候
  2. 當一個類希望由它的子類來指定它所建立的物件的時候
  3. 當類將建立物件的職責委託給多個幫助子類中的某一個,並且你希望將哪一個幫助子類是代理者這一資訊區域性化的時候

3.dome

  1. 寫程式碼的時候,表面看的時候,都是介面與介面之間的互動,但執行的時候,是介面的實現類的程式碼去執行。這個介面多型性的的應用。
  2. 核心思想:由介面先定義功能,真正需要用的時候,由子類來決定以及建立誰的物件。
  3. XXXWorkFactory的例項去決定建立XXXWork 的具體例項是誰。
//工廠方法的設計模式
public class TestFactoryMethod {
	public static void main(String[] args) {
		IWorkFactory i = new StudentWorkFactory();
		i.getWork().doWork();//學生寫作業
		//i,先獲得實現Work介面相應的例項,再由例項去執行介面重寫的方法
		IWorkFactory i1 = new TeacherWorkFactory();
		i1.getWork().doWork();//老師教功課
	}
}
interface IWorkFactory{
	Work getWork();
}
interface Work{
	void doWork();
}
class StudentWorkFactory implements IWorkFactory{

	@Override
	public Work getWork() {
		return new StudentWork();
	}
	
}
class TeacherWorkFactory implements IWorkFactory{

	@Override
	public Work getWork() {
		return new TeacherWork();
	}
	
}
class StudentWork implements Work{

	@Override
	public void doWork() {
		System.out.println("學生寫作業");
	}
	
}
class TeacherWork implements Work{

	@Override
	public void doWork() {
		System.out.println("老師教功課");
	}
	
}

4.設計圖

設計圖