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