Java設計模式菜鳥系列(十)模板方法模式建模與實現

轉載請註明出處:http://blog.csdn.net/lhy_ycu/article/details/39806973


模板方法模式(Template Method):在一個方法中定義了一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以再不改變算法結構的情況下,重新定義算法中的某些步驟。簡而言之:模板方法定義了一個算法的步驟,並允許子類爲一個或多個步驟提供實現。

一、uml建模:



二、代碼實現:

/**
 * 示例:模板方法定義了一個算法的步驟,並允許子類爲一個或多個步驟提供實現。
 * 
 * 以喫飯爲例:有幾個步驟 --> 煮飯+燒菜+喫飯中+喫完了
 */
abstract class AbstractTemplate {

	public final void haveMeal() {
		zhuFan();
		shaoCai();
		duringMeal();
		finish();
	}

	public abstract void zhuFan();

	public abstract void shaoCai();

	public void duringMeal() {
		System.out.println("喫飯中...");
	}

	public void finish() {
		System.out.println("喫完了...");
	}
}

class Sub1 extends AbstractTemplate {

	@Override
	public void zhuFan() {
		System.out.println("使用電飯煲煮飯...");

	}

	@Override
	public void shaoCai() {
		System.out.println("使用爐竈燒菜...");
	}
}

class Sub2 extends AbstractTemplate {

	@Override
	public void zhuFan() {
		System.out.println("使用高壓鍋煮飯...");

	}

	@Override
	public void shaoCai() {
		System.out.println("使用電磁爐燒菜...");
	}
}

/**
 * 客戶端測試類
 * 
 * @author Leo
 */
public class Test {
	public static void main(String[] args) {
		AbstractTemplate at1 = new Sub1();
		at1.haveMeal();
		System.out.println("\n");
		AbstractTemplate at2 = new Sub2();
		at2.haveMeal();
	}
}


三、總結

模板方法模式:一個抽象類中,有一個主方法,再定義1...n個方法,可以抽象,可以不抽象,定義子類繼承該抽象類,重寫抽象方法,通過調用抽象類,實現對子類的調用。


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