模板方法模式是類的行為模式。準備一個抽象類,將部分邏輯以具體方法以及具體構造函數的形式實現,然后聲明一些抽象方法來迫使子類實現剩余的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩余的邏輯有不同的實現。這就是模板方法模式的用意。
簡單的說,就是把公用的一些東西放到父類,留下鉤子函數,讓子類去實現自己獨特的地方。

還是改裝車的例子,可以參考裝飾模式的故事情節
我現在想改裝三輛車,這三輛車只要車身顏色噴成不一樣的,其他都一樣,那么可以這么做
抽象父類,把所有的改裝都封裝起來,把噴顏色改成鉤子函數
public abstract class Refit { PRivate void baoxiangang(){ System.out.println("加裝防撞鋼梁"); } private void jiaopan(){ System.out.println("加裝拖車絞盤"); } private void tanzhaodeng(){ System.out.println("假裝探照燈"); } private void jianzhen(){ System.out.println("更換減震套裝,提高地盤高度"); } protected abstract void colour(); protected void getJeepCar(){ baoxiangang(); jiaopan(); colour(); tanzhaodeng(); jianzhen(); }}子類
public class HomeCar extends Refit { @Override protected void colour() { System.out.println("我要噴成紅色"); } public static void main(String[] args) { HomeCar homeCar = new HomeCar(); homeCar.getJeepCar(); }}模板方法,無疑可以少些很多代碼,像什么controller層啊,service層啊,facade層啊,總是有很多通用的東西,這個時候,就可以抽象出來。
新聞熱點
疑難解答