設計模式之模板模式

2021-10-24 18:03:30 字數 2547 閱讀 5412

一、模板模式

定義

​    ​模板模式通常又叫模板方法模式(template method pattern)是指定義乙個演算法的骨架,並允許子類為乙個或者多個步驟提供實現。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟,屬於行為性設計模式。

適用場景

1、一次性實現乙個演算法的不變的部分,並將可變的行為留給子類來實現。 

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

優點

缺點

例項

​  利用模板模式重構jdbc操作業務場景,建立乙個模板類 jdbctemplate,封裝所有的 jdbc 操作。以查詢為例,每次查詢的表不同,返回的資料結構也就不一樣。我們針對不同的資料,都要封裝成不同的實體物件。而每個實體封裝的邏輯都是不一樣的,但封裝前和封裝後的處理流程是不變的,因此,我們可以使用模板方法模式來設計這樣的業務場景

建立約束orm邏輯的介面

t maprow(resultset rs,int rownum) throws exception;}

建立封裝所有處理流程的抽象類jdbctemplate

public abstract class jdbctemplatetry catch (exception e)return null;}protected void closeconnection(connection conn) throws exceptionprotected void closestatement(preparedstatement pstm) throws exceptionprotected void closeresultset(resultset rs) throws exceptionlistresult = new arraylist();int rownum = 1;while (rs.next())return result;}protected resultset executequery(preparedstatement pstm, object values) throws exceptionreturn pstm.executequery();}protected preparedstatement createpreparestatement(connection conn, string sql) throws exceptionpublic connection getconnection() throws exception}
建立實體物件member類

public class memberpublic void setusername(string username)public string getpassword()public void setpassword(string password)public string getnickname()public void setnickname(string nickname)public int getage()public void setage(int age)public string getaddr()public void setaddr(string addr)}
建立資料庫操作類memberdao

public class memberdao extends jdbctemplatepublic list<?> selectall()},null);}}
客戶端測試**

public static void main(string args)

模板設計模式 設計模式之模板模式

模板模式,通常又叫做模板方法模式,乙個抽象類公開定義了執行方法的模板,它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方法進行,這種型別的設計模式屬於行為型模式。模板模式主要解決將通用的演算法抽象起來,同樣的 邏輯出現了重複,就可以使用模板模式進行重構。關鍵 在抽象類實現,其他步驟在子類實現...

設計模式之模板設計模式

模板方法模式,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重新定義該演算法的某些特定步驟。模板方法模式是通過把不變行為搬到超類,去除子類中的重複 來體現它的優勢。當不變和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複...

設計模式之模板設計模式

在父類中定義好演算法的骨架,然後在子類中去實現。總的來說就是父類中定義需要實現的總方法,然後在子類中去依次實現它 當然根據物件的不同,所實現的具體細節不同。下面來看乙個例子 在父類中我們定義三個抽象的方法job 在子類中去實現它。子類中執行execute方法 job1 如果當前時間能整除2 則執行j...