模板模式和鉤子函數 一.什麼是模板模式? 定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個演算法的結構就能重新定義該演算法的某些特定步驟,模板模式屬於設計模式中的行為模式。 二.如何實現模板模式? 三.模板模式的實現要素? 準備一個抽象基類,將部分邏輯以具體方法的形式 ...
模板模式和鉤子函數
一.什麼是模板模式?
定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個演算法的結構就能重新定義該演算法的某些特定步驟,模板模式屬於設計模式中的行為模式。
二.如何實現模板模式?
public abstract class Hello{ abstract void initialize(); public final void HelloWorld(){ initialize(); if(isDelete()){ System.out.println("刪除"); } } /** *鉤子函數 */ public boolean isDelete(){ return true; } } public abstract class Game { public void initialize(){ System.out.println("my name is Hello"); } }
三.模板模式的實現要素?
準備一個抽象基類,將部分邏輯以具體方法的形式實現,然後聲明一些抽象方法交由子類實現剩餘邏輯,用鉤子方法給予子類更大的靈活性。最後將方法彙總構成一個不可改變的模板方法。
四.模板模式的應用場景?
演算法或操作遵循相似的邏輯,重構時(把相同的代碼抽取到父類中),重要,複雜的演算法,核心演算法設計為模板。
五.模板模式的優點和缺點?
封裝性好,復用性好,屏蔽細節,便於維護這幾大優點;不同的實現都需要不同的子類,導致類的數量太多。