1. 程式人生 > >關於責任鏈模式與模版模式的應用

關於責任鏈模式與模版模式的應用

模版模式是建立一個抽象類或介面,抽象類中有完成一個任務的步驟1,2,3,如果步驟1與3相同,只是步驟2的執行不同,那麼可以建立子類繼承抽象類或者不同子類介面實現介面,從而完成整個任務。

例如:

public interface A{

     void yunSuan(Object B)

}

public class ChildOneA implements A{

    @Override

    public void yunSuan(Object B){

        system.out.println("先洗菜");

    }

}

public class ChildTwoA implements A{

    @Override

    public void yunSuan(Object B){

        system.out.println("先買菜");

    }

}

public class ChildThreeA implements A{

    @Override

    public void yunSuan(Object B){

        system.out.println("先炒菜");

    }

}

上述模式就是模版模式。

那麼模版模式與責任鏈模式又該怎麼關聯起來呢???

將實現類封裝到map裡。

public class Constants{

    public static Map <Integer,String> MAP=new HashMap<Integer,String>(){

         put(1,ChildOneA);

         put(2,ChildTwoA);

         put(3,ChildThreeA);

    }

}

在具體的業務程式碼裡

public class BusinessCode{

      public void bussinessMethod(Integer type){

                 //獲取子類的計費類名

                 String childService=Constants.MAP.get( type);

                 ((A)SpringContextUtil.getBean(childService)).yunSuan(Object B)

      }

}

其中,String childService=Constants.MAP.get( type);根據hashMap的原理,陣列+連結串列的格式,責任鏈模式是將責任物件串成鏈來遍歷,不是當前責任物件則找責任物件的下一級,hashMap連結串列的遍歷和陣列的key值查詢過程相當於一個責任鏈的簡版模式,可以認為責任鏈模式在模版模式的應用或模版模式在責任鏈模式的功能拓展。



相關推薦

關於責任模式模版模式應用

模版模式是建立一個抽象類或介面,抽象類中有完成一個任務的步驟1,2,3,如果步驟1與3相同,只是步驟2的執行不同,那麼可以建立子類繼承抽象類或者不同子類介面實現介面,從而完成整個任務。例如:public interface A{     void yunSuan(Object

責任模式策略模式

責任鏈模式 Chain of Responsibility(CoR)模式也叫職責鏈模式或者職責連鎖模式,是行為模式之一,該模式構造一系列分別擔當不同的職責的類的物件來共同完成一個任務,這些類的物件之間像鏈條一樣緊密相連,所以被稱作職責鏈模式。 例1:比如客戶Client要完成一個任務,

AMD模式CMD模式

提前 角度 處理方式 沒有 全局 div 模塊 多個 amd AMD模式與CMD模式區別 1. 對於依賴的模塊,AMD 是提前執行,CMD 是延遲執行。不過 RequireJS 從 2.0 開始,也改成可以延遲執行(根據寫法不同,處理方式不同)。CMD 推崇 as l

[CentOS 7系列]VIM編輯模式命令模式

用戶 mtime 一、編輯模式按鍵作用i在當前字符前插入I在光標所在行的行首插入a在當前字符後插入A在光標所在行的行尾插入o在當前行的下一行插入新的一行O在當前的上一行插入新的一行二、命令模式命令作用/word向光標之後查找一個字符word,按n向後繼續搜索?word向光標之前查找一個字符word,按

Linux 修改root密碼 單用戶模式救援模式

linux 密碼修改 單用戶模式 救援模式單用戶模式重啟Linux進入GRUB界面在系統啟動界面,例如 選擇第一項,並按e鍵,進入edit界面,找到linux16開頭的行,將光標移至ro處,將ro修改為rw init=/sysroot/bin/sh 按Ctrl+X鍵啟動啟動後進入如下所示界面,先

瀏覽器標準模式怪異模式-CSS1Compat and BackCompat

方法 set code frameset http ctype nal cnblogs 16px      由於歷史的原因,各個瀏覽器在對頁面的渲染上存在差異,甚至同一瀏覽器在不同版本中,對頁面的渲染也不同。在W3C標準出臺以前,瀏覽器在對頁面的渲染上沒有統一規範,產生了差

Outlook 2013連接到Office 365時緩存模式聯機模式下的流量問題

office 365 outlook 2013 exchange 緩存模式 最近在遷移Office 365時,碰到一個流量居高不下,帶寬不夠用的問題,環境如下:Office 365 E5訂閱國際版,用戶端使用Outlook2013連接O365郵箱,600用戶,50M Office365專用帶寬,當

混雜模式標準模式總結

mod 默認 內容 也會 XML 使用 聲明 doc 參考 1 區分模式的意義? IE5.5引入了文檔模式的概念,通過使用DOCTYPE實現模式切換,它的主要作用是告訴瀏覽器以哪種模式呈現,如何解析文檔,也就是說兩種模式主要影響CSS內容的呈現,某些情況下也會影響JavaS

模式保護模式

虛擬存儲器 有效 偏移 進程 代碼 訪問權限 描述符 兼容 ont 1. 實模式,又叫實地址模式,CPU完全按照8086的實際尋址方法訪問從00000h--FFFFFh(1MB大小)的地址範圍的內存,在這種模式下,CPU只能做單任務運行;尋址公式為:物理地址=左移4位的段

zabbix主動模式被動模式、添加監控主機、添加自定義模板

Linux學習筆記zabbix主動模式與被動模式 添加監控主機 添加自定義模板 1.將原來的模板下載下來,刪除自己不需要的,導入時要更改名字。 2.創建一個鏈接的模板,取消鏈接後,在刪除模板中不想要的選項。 處理圖形中的亂碼 zabbix主動模式與被動模式、添加監控主機、添加自定義模板

【轉】策略模式命令模式區別

區別 相同 策略模式 菜單 nbsp 之間 mman 變化 排隊 策略模式 把易於變化的行為分別封裝起來,讓它們之間可以互相替換, 讓這些行為的變化獨立於擁有這些行為的客戶。GoF《設計模式》中說道:定義一系列算法,把它們一個個封裝起來,並且使它們可以相互替換。該模式使得算

孿生兄弟狀態模式策略模式有什麽區別,究竟該如何選擇

一段 如何解決 影片 工作 設置 飛機 等等 gety 兩種 都說狀態模式和策略模式很像,它們的 UML 類圖一樣。這也說明,單純從代碼角度來講,它們的本質一樣,其實都是多態的應用。但它們實際所代表的的事物特征是有本質區別的,選擇哪個設計模式,代表了你看待業務場景的角度。從

標準模式混雜模式

DOCTYPE 的一個重要作用就是告訴瀏覽器,它該以何種模式呈現。 我們通過document.compatMode這個屬性來檢測,當前頁面處於何種模式: CSS1Compat:標準模式 BackCompat:混雜模式   那麼,問題來了,什麼情況下頁面會處於混雜模式呢?

JS正則表示式:量詞的貪婪模式惰性模式的區別

在說明貪婪模式與惰性模式區別之前,說明一下JS正則基礎: 1.寫法法基礎: regexObj.test(str);例如/123/.test(‘123’); 2.基本語法 錨點:匹配一個位置 ^表示起始位置;/^a/.test(‘str’);表示是否以a開頭

單例模式工廠模式

最近突然想起單例模式及工廠模式這兩個概念,特此整理了一下: 單例模式: 在某一個時刻 某個類只允許被建立一個。 public class single(){ 私有的無參構造方法 private single(){ } 建立私有靜態資源物件 private static s

Python 基礎學習之命令列模式互動模式的區別

命令列模式:即在win10搜尋框中,直接跳出來的頁面。在此模式下,可以通過執行程式碼"python .py"執行.py檔案。需要注意的是,在此模式下,如果要執行的程式碼檔案不在當前目錄,需要使用cd進行切換,假設我的py檔案在E:\python\demo,那麼需要執行的程式碼指令是“cd /

建造者模式原型模式

建造者模式與原型模式 一、建造者模式 建造者模式概述 建造者模式分離了物件子元件。子元件單獨構造(由Builder來負責)然後再裝配(由Director負責)。 從而可以構 造出複雜的物件。這個模式適用於:某個物件的構建過程複雜的情況下使用。

備忘錄模式訪問者模式

備忘錄模式 Memento模式也叫備忘錄模式,是行為模式之一,它的作用是儲存物件(原生物件)的內部狀態到備忘錄,並在需要的時候通過caretaker(儲存了備忘錄)提取備忘錄的內容(undo/rollback)恢復原生物件以前的狀態。 角色及職責 Originator(原生者

直譯器模式狀態模式

直譯器模式 直譯器模式是行為型模式之一,描述瞭如何為簡單的語言定義一套語法,如何在該語言中表示一個句子,以及如何解釋這些句子,然後執行相應的動作和行為! 角色及職責 Context 直譯器上下文環境類。用來儲存直譯器的上下文環境,比如需要解釋的文法等。 AbstractExp

MVC模式MVVM模式詳解

對於很多程式設計的初學者來說,MVC 的設計理念和 MVVM 的設計理念難以掌握,因為很多在初學階段的人,沒有經歷大型專案開發的經驗,更沒有對程式設計的工程化體系的發展及歷史進行過研究,更是少有人提及程式設計工程化的概念。 MVC模式   MVC設計模式的出現,在一定程度