GOF23設計模式之責任鏈模式(chain of responsibility)與結構型模式總結經典
來源:程序員人生 發布時間:2015-04-23 08:10:13 閱讀次數:2513次
責任鏈模式:Chain of responsibility
將能夠處理同1類要求的對象連成1條鏈,所提交的要求沿著鏈傳遞,鏈上的對象逐一判斷是不是有能力處理該要求,如果能則處理,如果不能則傳遞給鏈上的下1個對象。
場景:
打牌時,輪番出牌。
接力賽跑
大學中,獎學金審批。
公司中,公文審批。
結構型模式匯總:
-
代理模式:為真實對象提供1個代理,從而控制對真實對象的訪問。
-
適配器模式:使本來由于接口不兼容不能1起工作的類,可以1起工作。
-
橋接模式:處理多層繼承模式,處理多維度變化的場景,將各個維度設計成獨立的繼承結構,使各個維度可以獨立的擴大在抽象層建立關聯。
-
組合模式:將對象組合成樹狀結構以表示“部份和整體”的層次結構,使得客戶可以統1的調用葉子對象和容器對象。
-
裝潢模式:動態地給1個對象添加額外的功能,比繼承靈活。
-
外觀模式:為系統提供1個統1的調用接口,使得子系統更加容易使用。
-
享元模式:應用同享技術有效的實現管理大量細粒度對象,節省內存,提高效力。
創建型模式:
關注對象的創建進程
結構型模式:
關注對象和類的組織。
行動型模式:關注系統中對象之間的相互交互,研究系統在運行時對象之間的相互通訊。和協作,進1步明確對象的職責。共有101種模式。
行動型模式匯總:
-
責任鏈模式 chain of responsibility
-
命令模式 command
-
解釋器模式 interpreter
-
迭代器模式 iterator
-
中介者模式 mediator
-
備忘錄模式 memento
-
視察者模式 observer
-
狀態模式 state
-
策略模式 strategy
-
模板方法模式 template method
-
訪問者模式 visitor
場景:
公司里面,報銷個單據需要經過流程
-
申請人填申請單,申請給經理
-
小于1000,經理審查
-
超過1000,交給總經理審批
-
總經理審批通過
公司里面,請假條的審批進程:
-
如果請假天數小于3天,主任審批
-
如果請假條數大于等于3天,小于10天,經理審批
-
如果大于等于10天,小于310天,總經理審批
-
如果大于30天,提示謝絕。
添加新的處理對象:
由于責任鏈的創建完全在客戶端,因此新增新的具體處理者對原有類庫沒有任何影響,只需添加新的類,然后再客戶端調用時添加便可。符合開閉原則。
責任鏈模式:
鏈表定義職責鏈(例如我們下面代碼所實現的)
非鏈表方式實現職責鏈
通過集合,數組生成職責鏈更加實用!實際上,很多項目中,每一個具體的Handler其實不是由開發團隊定義的,210項目上線后由外部淡微追加的,所以使用鏈表方式定義COR鏈就很困難。
開發中常見的場景:
Java中,異常機制就是1種責任鏈模式。1個try可以對應多個catch。當第1個catch不匹配類型,則自動跳轉到第2個catch
Javascript語言中,事件得冒泡和捕獲機制。Java語言中事件的處理采取視察者模式。
Servelet開發中,過濾器的鏈式處理。
Struts2中,攔截器的調用也是典型的責任鏈模式。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈