模板方法設計模式
在現實生活中,完成某件事是需要n多個固定步驟的。如"在**網進行購物"這件事情的完成一般需要三個步驟:登入**、挑選商品、付款。但對於每個人幾乎都是相同的操作,但不同的地方是,每個人挑選的商品時不同的。
在軟體開發過程中同樣存在這樣的情況,某類的某個方法的實現,需要幾個固定步驟。在這些固定步驟中,對於該類的不同物件,有些步驟地實現是固定不變的,有些步驟的實現是大相徑庭的,有些步驟的實現是可便可不變的,對於這種情況,就是合適用模板方法設計模式程式設計。
模板方法設計模式的定義是定義了乙個操作中某種演算法的框架,而將一些步驟延遲到子類中。模板方法設計模式使得子類在不改變乙個演算法結構的前提下,對某些步驟實現個性化定義。
模板方法程式構成
在末班方法設計模式中,存在乙個父類,其中包含兩類方法:模板方法與步驟方法。
模板方法:即完成模板方法的每個階段性方法,是完成模板方法的演算法步驟中必須由子類完成的個性化定義。
步驟方法:即完成模板方法的每個階段性方法,每個步驟方法完成某一特定的、完成總算法的一部分功能。步驟方法有三種型別:抽象方法、最終方法與鉤子方法。
抽象方法:即要求子類必須實現的方法,是完成模板方法的演算法步驟中必須由自雷完成的個性化定義。
最終方法:是子類不能重寫的方法,是若要完成模板方法的演算法步驟,對於所有子類執行都一言過的步驟。
鉤子方法:是父類給出了預設實現,但子類也可以重寫的方法。
抽象類:
publicabstractclassshopping
// 模板方法
使用者登入
子類不能重寫的方法
privatefinalvoiduserlogin()
// 步驟方法
-抽象方法
子類必須實現的方法
publicabstractvoidbuy();
// 步驟方法
- 鉤子方法
使用銀聯卡支付
publicvoidpay()
}兩個實現類:
publicclassclothesshoppingextendsshopping
@override
publicvoidpay() }
publicclassshoesshoppingextendsshopping }
測試類:
publicclassmytest }
執行截圖
設計模式 模板方法模式 Java
模板方法模式 template 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。舉個栗子 小明想在學習過後去運動或者上會網,那麼小明在學習某門課程過後一定會搞點事情,而這些事情是可變化的,誰也不知道他要幹什麼,所以...
java設計模式 模板方法模式
在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。準備乙個抽象類,將部分邏輯以具體方法的形式實現,然後宣告一些抽象方法交由子類實現剩餘邏輯,有鉤子方法給予...
JAVA設計模式 模板方法模式
模板方法模式是一種行為型設計模式。其思想是 將部分邏輯以具體方法的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯,不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。模板方法模式涉及到2個角色 具體模板 concrete template 結構圖 具體 實現 publi...