欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
設計模式之模板模式

1 概述

模板模式(Template Patern),是在一個(gè)方法中定義了一個(gè)算法的骨架,而將一些步驟延遲到子類(lèi)中。模板方法中使得子類(lèi)可以在不改變算法結構的情況下,重新定義算法中的某些步驟。

模板就是一個(gè)方法,這個(gè)方法將算法定義成一組步驟,為了不被子類(lèi)改變,這個(gè)方法通常被限制為final類(lèi)型。另外還有一個(gè)鉤子(hook)的概念,所謂的“鉤子”就是默認不做事的方法,這個(gè)方法在抽象類(lèi)中是不實(shí)現的或者為空,子類(lèi)可以決定是否要覆蓋它,自然,這個(gè)方法的調用是在“模板”方法中。

當子類(lèi)必須提供“模板”中某個(gè)方法的實(shí)現時(shí),這個(gè)方法就在父類(lèi)中定義為抽象方法;如果這個(gè)方法是可選的,或者對于子類(lèi)的實(shí)現不重要的時(shí)候,就使用鉤子來(lái)控制。使用鉤子,可以讓子類(lèi)對模板方法中即將發(fā)生的步驟做出反應。

2 示例

來(lái)個(gè)示例,其實(shí)網(wǎng)上很多例子了,做飯的例子、燒菜的例子、泡咖啡泡茶的例子,等等,都是為了說(shuō)明模板模式的用法。在這里就不說(shuō)那些例子了,自己寫(xiě)個(gè)玩完,純粹練手。

現在安卓手機應用非常多,但是都需要首先安裝到手機上才能使用,在安裝的時(shí)候,我們抽象一下,一般需要這么幾個(gè)步驟:申請安裝權限、創(chuàng )建相應目錄、注冊服務(wù)、選擇是否開(kāi)機啟動(dòng)等。我們以這個(gè)為例子,說(shuō)明下模板模式的使用。

首先是創(chuàng )建個(gè)抽象類(lèi),用于描述所有的安裝步驟

是否開(kāi)機啟動(dòng)這個(gè)就是鉤子,由子類(lèi)決定。

下面是具體的一個(gè)實(shí)現,有道筆記的安裝:

這里的實(shí)現,我們覆寫(xiě)了isAutoStart方法,將其設置為true,將當前此軟件加入開(kāi)機自啟列表中。鉤子,可以在子類(lèi)中覆寫(xiě),也可以直接使用父類(lèi)中的默認實(shí)現。下面的QQ安裝,就是使用的默認實(shí)現:

以上基本上就是抽象模板和具體模板的實(shí)現,模板方法實(shí)際上在子類(lèi)中都沒(méi)有修改,因為我們把它設置成了final型,子類(lèi)所修改的就是模板方法中的一些具體的實(shí)現算法,比如不同的軟件,它的安裝目錄、注冊的服務(wù)都是不同,我們把這些都作為抽象方法,子類(lèi)必須實(shí)現自己的特定方法。

寫(xiě)個(gè)測試類(lèi):

測試結果:

3 小結

通過(guò)上面的例子,我們可以看到,使用模板方式時(shí),有兩個(gè)角色:

(1)抽象模板角色:定義了一個(gè)或多個(gè)抽象操作,以便讓子類(lèi)實(shí)現,這些抽象操作稱(chēng)為基本操作。

(2)具體模板角色:實(shí)現父類(lèi)所定義的一個(gè)或多個(gè)抽象方法。

模板模式主要實(shí)現了代碼復用,符合開(kāi)放-封閉原則,因為引入了一個(gè)抽象類(lèi),所以如果具體實(shí)現過(guò)多的話(huà),類(lèi)之間的關(guān)系是復雜點(diǎn)。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
《Head First設計模式》閱讀筆記.第八章
模板方法模式——每日的生活行為
快速掌握模板方法模式
17. 模板模式
Java設計模式之模板方法模式(Template Method)
模板方法模式
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久