天天看點

Java23種設計模式——13.行為型模式之模闆方法模式模闆方法模式模式的定義與特點模式的結構與實作

Java中除去有設計原則之外,還有23中設計模式。

這些模式都是前輩們一點一點積累下來,一直在改進,一直在優化的,而這些設計模式可以解決一些特定的問題。

并且在這些模式中,可以說是将語言的使用展現的淋漓盡緻。

那我們今天要學習  行為型模式  中的  模闆方法模式  !

模闆方法模式

先百度百科看一下什麼叫模闆方法模式

Java23種設計模式——13.行為型模式之模闆方法模式模闆方法模式模式的定義與特點模式的結構與實作

我們可以通過百科中給的資訊了解一些東西,那就是模闆模式是定義了一個算法步驟,然後子類可以為其中一個或者多個步驟提供實作,這樣子類可以不改變架構算法的同時,從新定義了一些算法。

好比說我們去醫院,得先挂号,然後去找看病,繳納費用,最後看病,最後走人,這裡呢,挂号、繳納費用、走人都是必須的,這我們可以定義在父類中直接實作,但是具體我們看什麼病,怎麼去看病都是不一定的,有的人可能肚子疼,有的人可能是感冒了,是以需要具體的子類進行實作

模式的定義與特點

模闆方法(Template Method)模式的定義如下:定義一個操作中的算法骨架,而将算法的一些步驟延遲到子類中,使得子類可以不改變該算法結構的情況下重定義該算法的某些特定步驟。它是一種類行為型模式。

該模式的主要優點如下:

1. 它封裝了不變部分,擴充可變部分。它把認為是不變部分的算法封裝到父類中實作,而把可變部分算法由子類繼承實作,便于子類繼續擴充。

2. 它在父類中提取了公共的部分代碼,便于代碼複用。

3. 部分方法是由子類實作的,是以子類可以通過擴充方式增加相應的功能,符合開閉原則。

該模式的主要缺點如下:

1. 對每個不同的實作都需要定義一個子類,這會導緻類的個數增加,系統更加龐大,設計也更加抽象。

2. 父類中的抽象方法由子類實作,子類執行的結果會影響父類的結果,這導緻一種反向的控制結構,它提高了代碼閱讀的難度。

模式的結構與實作

模闆方法模式主要包含以下幾個角色:

1. 抽象角色:負責給出一個算法的輪廓和骨架。

2. 具體的實作類:實作抽象類中所定義的抽象方法和鈎子方法,它們是一個頂級邏輯的一個組成步驟。

然後我們來使用一下,我們就用上面去醫院看病的例子來做一個程式

第一步:

第一步,我們先定義好抽象角色,這裡我們需要定義五個方法和一個模闆方法

Java23種設計模式——13.行為型模式之模闆方法模式模闆方法模式模式的定義與特點模式的結構與實作

然後我們把需要實作的在父類中進行實作

Java23種設計模式——13.行為型模式之模闆方法模式模闆方法模式模式的定義與特點模式的結構與實作

第二步:

我們開始寫實作這個父類的子類,這個子類是主要實作診斷病情和治療,我們來看一下

Java23種設計模式——13.行為型模式之模闆方法模式模闆方法模式模式的定義與特點模式的結構與實作

測試:

最後一步,我們弄一個測試類

Java23種設計模式——13.行為型模式之模闆方法模式模闆方法模式模式的定義與特點模式的結構與實作

然後我們運作一下

Java23種設計模式——13.行為型模式之模闆方法模式模闆方法模式模式的定義與特點模式的結構與實作

可以看到,我們這個是可以實作的,不過醫院不止有眼科,還有其他的科,比如說骨科,之後的話,我們隻需要實作 Model 類,然後去實作裡面的兩個方法即可,這樣就省的我們複制粘貼代碼了

OK,就到這裡,大家好好看一下。多多練習。有問題可以聯系我QQ:2100363119

歡迎大家通路我的個人網站:lemon1234.com 感謝大家留言