結合案例深入解析模板方法設計模式

2022-08-12 17:12:10 字數 1271 閱讀 3453

模板方法模式是類的行為模式。準備乙個抽象類,將部分邏輯以具體方法以及具體建構函式的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。這就是模板方法模式的用意。

例如: 在現實生活中,完成某件事情是需要 n 個固定步驟的。如"在**進行購物"這件事情的完成一般需要三個步驟:登入**、挑選商品、 付款。但對於登入**與付款這兩步,每個人幾乎都是相同的操作。但不同的地方是,每個人所挑選的商品是不同的。 在軟體開發過程中同樣存在這樣的情況。某類的某個方法的實現,需要幾個固定步驟。在這些固定步驟中,對於該類的不同物件, 有些步驟的實現是固定不變的,有些步驟的實現是大相徑庭的,有些步驟的實現是可變可不變的。對於這種情況,就適合使用模板方法設計模式程式設計。
基本結構:

在模板方法設計模式中,存在乙個父類(一般是抽象的)。其中包含 兩類方法: 模板方法 和 3 種步驟方法;

結構:

實現在**上購物的案例。
基本邏輯圖:

**:首先看shopping類:

public abstract class shopping 

// 固定方法(最終方法)

public final void uselogin

() //抽象方法

public abstract void buy();

// 鉤子方法

public void pay

()}複製**

然後是兩個子類:

public class shoesshopping extends shopping 

}public class clothesshopping extends shopping

// 重寫了鉤子方法

@override

public void pay

() }複製**

測試:

public class mytest 

}複製**

輸出:

使用者登入

購買nike鞋子!!!!

使用銀聯支付

-----------------------

使用者登入

購買海瀾之家**!!!!!

使用支付寶支付複製**

**於:

C (深入解析模板函式)

3小節課 1.q 證明編譯器對函式模板會有兩次編譯。a 一次是對函式模板自動尋找型別,並產生函式。第二次編譯是對函式進行編譯 include include using namespace std class test template typename t void swap t a,t b ty...

lodash常用方法結合實際專案解析

官方定義 該方法類似 assign,除了它遞迴合併sources 物件自身和繼承的可列舉屬性到object目標物件。如果目標值存在,被解析為undefined的sources 物件屬性將被跳過。陣列和普通物件會遞迴合併,其他物件和值會被直接分配覆蓋。源物件從從左到右分配。後續的 物件屬性會覆蓋之前分...

深入淺出模板方法模式

一 引子這是乙個很簡單的模式,卻被非常廣泛的使用。之所以簡單是因為在這個模式中僅僅使用到了繼承關係。繼承關係由於自身的缺陷,被專家們扣上了 罪惡 的帽子。使用委派關係代替繼承關係 盡量使用介面實現而不是抽象類繼承 等等專家警告,讓我們這些菜鳥對繼承 另眼相看 其實,繼承還是有很多自身的優點所在。只是...