23種設計模式 模板方法模式

2021-09-13 23:07:06 字數 1848 閱讀 9659

​ 參考文件:

​ 通常叫模板方法模式定義乙個演算法的骨架,並允許子類為乙個或者多個步驟提供實現。

​ 能夠使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟。

​ 屬於行為性設計模式

​ 一次性實現乙個演算法的不變的部分,並將可變的部分交給子類來實現

​ 各子類中公共的行為被提取出來並集中到乙個公共的父類當中,從而避免**重複

​ 1、利用模板方法將相同處理邏輯的**放到抽象父類中,可以提高**的復用性。

​ 2、將不同的**不同的子類中,通過對子類的擴充套件增加新的行為,提高**的擴充套件性。

​ 3、把不變的行為寫在父類上,去除子類的重複**,提供了乙個很好的**復用平台,

符合開閉原則。

1、類數目的增加,每乙個抽象類都需要乙個子類來實現,這樣導致類的個數增加。

2、類數量的增加,間接地增加了系統實現的複雜度。

3、繼承關係自身缺點,如果父類新增新的抽象方法,所有子類都要改一遍

乙個小偷偷東西一般分成幾個步驟:

所以我們先定義乙個小偷

public

class

halflingthief

public

void

steal()

public

void

changemethod

(stealingmethod method)

}

​ 因為小偷偷東西都是幾個固定步驟,所以我們使用模板方法,但是下手的過程有多種方式,所以開放鉤子steal方法

/**

* * stealingmethod defines skeleton for the algorithm.

* */

public

abstract

class

stealingmethod

.", target)

;confusetarget

(target)

;stealtheitem

(target);}

}

撞擊然後開溜

public

class

hitandrunmethod

extends

stealingmethod

@override

protected

void

confusetarget

(string target)

@override

protected

void

stealtheitem

(string target)

}

偷偷摸摸的幹活

測試

/**

* * template method defines a skeleton for an algorithm. the algorithm subclasses provide

* implementation for the blank parts.

* * in this example contains that can be changed. first

* the thief hits with and then with .

* */

public

class

}

jdbctemplate

獲取連線和關閉鏈結都已經寫好了

處理結果集的地方開放

模板和策略的區別:

​ 模板子類能干預實現,但是基礎流程已經定下來了

​ 策略不能干預流程,實現方式只能去選擇

23種設計模式 14 模板方法模式

第一種實現 抽象類 第一種實現 抽象類 public abstract class makefood public void pouroil public void waitoilhot 具體往鍋裡倒哪個菜,交給子類,子類必須實現 public abstract void pourfood publ...

23種設計模式 06模板方法模式

模板方法模式太簡單,我都感覺不像乙個設計模式,這個模式沒有學過設計模式的同學也可能非常容易的想到,並寫出來,那麼下面,我的簡單的舉個例子吧!uml圖就不用畫了 小明小紅 cpur5 i7記憶體條 16g16g 顯示卡gtx 1650 集顯硬碟 500g 500g 此時,我們發現,配置過程中,除了硬體...

23種設計模式 模板模式

在軟體構建過程中,對於某一項任務,它常常有穩定的整體操作結構,但各個子步驟卻有很多改變的需求,或者由於固有的原因 比如說框架與應用之間的關係 而無法和任務的整體結構同時實現。如何在確定穩定操作的前提下,來靈活應對各個子步驟的變化或者晚期的需求?定義乙個操作中的演算法的骨架 穩定 而將一些步驟延遲 變...