摘要:定義在父類中定義處理流程的框架,在子類中實現(xiàn)具體處理的模式就稱為模板方法模式參與角色抽象類抽象類不僅負(fù)責(zé)實現(xiàn)模板方法,還負(fù)責(zé)聲明在模板方法中所使用到的抽象方法。
定義
在父類中定義處理流程的框架,在子類中實現(xiàn)具體處理的模式就稱為模板方法模式參與角色
抽象類(AbstractClass)
抽象類不僅負(fù)責(zé)實現(xiàn)模板方法,還負(fù)責(zé)聲明在模板方法中所使用到的抽象方法。
具體類(子類)
該角色負(fù)責(zé)具體實現(xiàn)抽象類角色中定義的抽象方法。這里實現(xiàn)的方法將會在抽象類角色的模板方法中被調(diào)用。
優(yōu)點封裝不變部分,擴展可變部分
提取公共部分代碼,便于維護
行為由父類控制,子類負(fù)責(zé)實現(xiàn)
使用場景多個子類有共有方法,并且邏輯基本相同
重要、復(fù)雜的算法,可以把核心算法設(shè)計為模板方法,周邊的相關(guān)細(xì)節(jié)功能則由各個子類實現(xiàn)
重構(gòu)時,模板方法是一個經(jīng)常使用的方法,把相同的代碼抽取到父類中,然后通過構(gòu)造函數(shù)約束其行為
代碼示例# 抽象類 AbstractClass.php operate1(); $this->operate2(); } /** * 操作1 * @return mixed */ abstract protected function operate1(); /** * 操作2 * @return mixed */ abstract protected function operate2(); }
# 具體類1 ConcreteClassOne.php# 具體類2 ConcreteClassTwo
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/29319.html
摘要:眾多面向?qū)ο蟮木幊趟枷腚m不盡一致,但是無論哪種面向?qū)ο缶幊陶Z言都具有以下的共通功能。原型編程以類為中心的傳統(tǒng)面向?qū)ο缶幊蹋且灶悶榛A(chǔ)生成新對象。而原型模式的面向?qū)ο缶幊陶Z言沒有類這樣一個概念。 什么是面向?qū)ο螅窟@個問題往往會問到剛畢業(yè)的新手or實習(xí)生上,也是往往作為一個技術(shù)面試的開頭題。在這里我們不去談如何答(fu)好(yan)問(guo)題(qu),僅談?wù)勎宜斫獾拿嫦驅(qū)ο蟆?從歷...
摘要:和組合的語義定義了一種減少復(fù)雜性的方式,避免傳統(tǒng)多繼承和類相關(guān)典型問題。隊列的目的是將耗時的任務(wù)延時處理,比如發(fā)送郵件,從而大幅度縮短請求和相應(yīng)的時間。同樣的道理,根據(jù)引入不同的來完成對應(yīng)的功能。 showImg(https://segmentfault.com/img/remote/1460000010868178); Trait 概念 在常規(guī)的 PHP 開發(fā)中,我們都習(xí)慣于先編寫一...
摘要:關(guān)于,新手理解起來可能比較困難,尤其是一些很牛逼的預(yù)查正則表達(dá)式。非貪婪與貪婪的問題貪婪出現(xiàn)在這種不確定數(shù)量的匹配中,所謂的貪婪,表示正則表達(dá)式在匹配的時候,盡可能多的匹配符合條件的內(nèi)容。 學(xué)習(xí)了半年的正則表達(dá)式,也不能說一直學(xué)習(xí)吧,就是和它一直在打交道,如何用正則表達(dá)式解決自己的問題,并且還要考慮如何在匹配大量的文本時去優(yōu)化它。慢慢的覺得正則已經(jīng)成為自己的一項技能,逐漸的從一個正則表...
摘要:關(guān)于,新手理解起來可能比較困難,尤其是一些很牛逼的預(yù)查正則表達(dá)式。非貪婪與貪婪的問題貪婪出現(xiàn)在這種不確定數(shù)量的匹配中,所謂的貪婪,表示正則表達(dá)式在匹配的時候,盡可能多的匹配符合條件的內(nèi)容。 學(xué)習(xí)了半年的正則表達(dá)式,也不能說一直學(xué)習(xí)吧,就是和它一直在打交道,如何用正則表達(dá)式解決自己的問題,并且還要考慮如何在匹配大量的文本時去優(yōu)化它。慢慢的覺得正則已經(jīng)成為自己的一項技能,逐漸的從一個正則表...
摘要:組件三要素組件的三要素就是小程序定義的三種文件因為本身就是模塊化開發(fā),所以這天然有利于組件化。日歷組件所以利用和就可以打造一款組件了。這樣就完成了一個組件編寫,任何需要用到的地方都可以引入了。 背景 先談下背景,在做一款產(chǎn)品的時候需要用到日期選擇器,但是官方的卻不太滿足需求,因為無法選擇農(nóng)歷啊。所以自己來造一個輪子好了,造輪子之前先想想啊,萬一以后多個地方要用到,多個項目要用,怎么辦呢...
閱讀 2701·2021-10-12 10:12
閱讀 2341·2021-09-02 15:41
閱讀 2573·2019-08-30 15:55
閱讀 1404·2019-08-30 13:05
閱讀 2439·2019-08-29 11:21
閱讀 3539·2019-08-28 17:53
閱讀 3033·2019-08-26 13:39
閱讀 806·2019-08-26 11:50