該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP
今天來談談責任鏈模式,乍一聽責任鏈模式好像很高級的一樣,但是相信我,其實每位天朝的同學都十分熟悉這個模式,責任鏈模式,就好像中國的官場制度一樣,每一個級別的權利都區分的很細,舉個生活中的栗子:
村委不能越級去替鎮委辦事情,如果村委無法解決,只能向上求助鎮委
鎮委不能越級去替市委辦事情,如果鎮委無法解決,只能向上求助市委
市委不能越級去替省委辦事情,如果市委無法解決,只能向上求助省委
副領導不能越級去替正領導辦事情,如果副領導無法解決,只能向上求助正領導
….
…
直到找到合適的~ 鎮委(未解決)-> 市委(未解決)->省委(解決)->中央(老大不需要出馬,因為前面已經由小弟解決了~)
對的,就是這樣,每個級別有自己職責,如果自己沒有權限解決這個問題,只能一層一層往上找,直到有一個合適的人出現然后解決問題。
編程中的使用場景:
在一個論壇中,如果一個人的帖子被人舉報了,那么這個帖子就會進入管理員的刪帖界面,那么進入哪個管理員的刪帖界面呢?這個時候就用到責任鏈模式了,把這個帖子給權限最低的管理員,如果這個管理員無法處理,那么就一層一層往上找,直到找到一個人有權利刪帖了,該流程才算結束。
接下來請看具體代碼:
觀察者模式.php
higher; $higher->operation($lev); } } } //二級官 class Lev2 extends duty{ protected $higher = "lev3"; public function operation($lev){ if ($lev <= 2) { echo"鎮委解決"; }else{ $higher = new $this->higher; $higher->operation($lev); } } } class Lev3{ protected $higher = "lev4"; public function operation($lev){ if ($lev <= 3) { echo"市委解決"; }else{ $higher = new $this->higher; $higher->operation($lev); } } } class Lev4{ protected $higher = null; //沒有比中央更大的了,所以可以不用判斷直接解決 public function operation($lev){ echo "中央解決"; } } $question = new Lev1();//從最低級的開始嘗試 $question->operation(3);//事件等級為3,所以到市委才能解決 //output :"市委解決"; ?>
其實很簡單,就是在當前類中定義好自己的上級名字,遇到自己解決不了的問題,就直接實例化調用上級,讓它來處理。圖示:
該文章屬于《編程中的那些經典套路——設計模式匯總》系列
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21668.html
摘要:如果看不懂的話,可以在評論區中提問,我會第一時間回答你無論何時我一直都在嗯哼該文章屬于編程中的那些經典套路設計模式匯總系列 在正式閱讀前,我先談談我們該用什么姿勢和心態學習設計模式: 如果你還沒有過多的編程經驗(泛指半年以下),我建議你把它當做小說來看,能看懂多少是多少,因為半年以下經驗的程序員用到設計模式的情況只會出現在面試上,至于實際工作中?相對來說這部分不會由你負責。 如果你已...
摘要:面向對象常見的設計模式有策略模式模板方法觀察者模式責任鏈模式以及工廠模式,使用表達式函數式編程思維有助于避免面向對象開發中的那些固定代碼。 本文是一篇《Java 8實戰》的閱讀筆記,閱讀大約需要5分鐘。 有點標題黨,但是這確實是我最近使用Lambda表達式的感受。設計模式是過去的一些好的經驗和套路的總結,但是好的語言特性可以讓開發者不去考慮這些設計模式。面向對象常見的設計模式有策略模式...
摘要:該文章屬于編程中的那些經典套路設計模式匯總系列,并且以下內容基于語言前面我們寫了簡單工廠模式,編程中的那些套路關于簡單工廠模式,但簡單工廠模式有一些不足違反開放封閉原則,所以需要設計出一套更加規范的設計模式。 該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 前面我們寫了簡單工廠模式,《編程中的那些套路——關于簡單工廠模式》,但簡單工廠模式有一些不足(...
摘要:簡單工廠模式就是遵循了這一原則,它讓不同職責的類各司其職。重點來了,簡單工廠模式的不足但是簡單工廠模式有一個不足,雖然它遵循了單一職責原則,但它違反了另一條同樣很重要的原則開放封閉原則。 該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 面向對象五大原則中有一點非常重要的原則:單一職責原則。 簡單工廠模式就是遵循了這一原則,它讓不同職責的類各司其職。 ...
該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 在設計模式中,單例模式和工廠模式)可以說是使用的最普遍的設計模式了,所以掌握此種模式尤為重要。 單例模式一般使用在資源共享和需要控制資源的情況下。 例如:購物車,回收站,數據庫連接池,計數器,配置文件共享等所有項目中只需要存在一個的模塊,你都可以采用單例模式。 單例模式的好處就在于當前進程只產生一個對象(或者叫...
閱讀 2259·2021-08-23 09:46
閱讀 908·2019-08-29 18:31
閱讀 1861·2019-08-29 17:04
閱讀 2446·2019-08-29 12:23
閱讀 1851·2019-08-26 14:05
閱讀 1074·2019-08-26 13:44
閱讀 3140·2019-08-26 12:23
閱讀 2199·2019-08-26 10:46