設計模式-創建型模式#工廠方法FactoryMethod

此例子是java的23種設計模式中的例子,很久以前就看了。今天下班看來部電影《戰狼》,看完了沒什麼事就翻了一下書,重溫了一次,以此做下筆記。


FactoryMethod工廠方法

定義一個用於創建對象的接口,讓子類決定實例化哪一個類。FactoryMethod
使一個類的實例*延伸到其子類。

適用性
1、當一個類不知道它所必須創建的對象的類的時候。
2、當一個類希望由它的子類來指定它所創建的對象的時候。
3、當*將創建對象的職責委託給多個幫助*類中的某一個。並且*將希望哪一個
幫助子類是代理者這一信息局部化的時候。

參與者
1、Product
定義工廠方法所 創建的對象的接口。
2、ConcreteProduct
實現Product接口
3、Creator
聲明工廠方法,該方法返回一個Product類型的對象
Creator也可以定義一個工廠方法的缺省實現,它返回一個缺省的
ConcreteProduct對象。
可以調用工廠方法以創建一個Product對象。
4、ConcreteCreator

重定義工廠方法以返回一個ConcreteProduct實例。


類圖:


*roduct

package com.dsp;

public interface Work {
	void doWork();
}



ConcreteProduct
package com.dsp;

public class StudentWork implements Work {

	@Override
	public void doWork() {
		System.out.println("學生做作業!");
	}

}

package com.dsp;

public class TeacherWork implements Work {

	@Override
	public void doWork() {
		System.out.println("老師審批作業!");
	}

}



Creator
package com.dsp;

public interface IWorkFactory {
	Work getWork();
}

package com.dsp;

public class StudentWorkFactory implements IWorkFactory {

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

}



ConcreteCreator
package com.dsp;

public class TeacherWorkFactory implements IWorkFactory {

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

}



測試類
package com.dsp;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		IWorkFactory studentWorkFactory = new StudentWorkFactory();
		studentWorkFactory.getWork().doWork();
		
		IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
		teacherWorkFactory.getWork().doWork();
	}

}

控制檯輸出:

學生做作業!
老師審批作業!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章