1. 程式人生 > >_082_Java_工廠方法(FactoryMethod)

_082_Java_工廠方法(FactoryMethod)

  •  概述:

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

  • 適用性:

1. 當一個類不知道它所必須建立的物件的類的時候

2. 當一個類希望由它的子類來指定它所建立的物件的時候

3. 當類將建立物件的職責委託給多個幫助子類中的某一個,並且你希望將哪一個幫助子類是代理者這一資訊區域性化的時候

 

  • 舉例
  • 總結   

FactoryMethod模式是設計模式中應用最為廣泛的模式,在面向物件的程式設計中,物件的建立工作非常簡單,物件的建立時機卻很重要。FactoryMethod解決的就是這個問題,它通過面向物件的手法,將所要建立的具體物件的建立工作延遲到了子類,從而提供了一種擴充套件的策略,較好的解決了這種緊耦合的關係。 

package org.lfz._11_03_FactoryMethod;

/*工廠方法*/
public class TestFactoryMethod {
	public static void main(String[] args) {
		IWorkFactory a = new StudentWorkFactory();
		a.getWork().doWork();
		IWorkFactory b = new TeacherWorkFactory();
		b.getWork().doWork();
	}
	
}

interface Work{
	void doWork();
}

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

class TeacherWork implements Work{
	@Override
	public void doWork() {
		System.out.println("教師改作業");
	}
}

interface IWorkFactory{
	Work getWork();
}

class StudentWorkFactory implements IWorkFactory{

	@Override
	public Work getWork() {
		// TODO Auto-generated method stub
		return new StudentWork();
	}
}

class TeacherWorkFactory implements IWorkFactory{

	@Override
	public Work getWork() {
		// TODO Auto-generated method stub
		return new TeacherWork();
	}
	
}
  • 執行結果

 FactoryMethod模式是設計模式中應用最為廣泛的模式,在面向物件的程式設計中,物件的建立工作非常簡單,物件的建立時機卻很重要。FactoryMethod解決的就是這個問題,它通過面向物件的手法,將所要建立的具體物件的建立工作延遲到了子類,從而提供了一種擴充套件的策略,較好的解決了這種緊耦合的關係。