前面2節,咱們主要介紹了構建型和結構型的設計模式,今天咱們重點講一下行爲型。設計模式
策略模式設計
要點:一個策略的接口,若干個實現類,針對不一樣的狀況,選擇不一樣的策略實現來解決問題。netty
典型場景:在以前的社保項目當中,針對不一樣的參保人類型,它的各類險種的計算方式會有一些不一樣,多采用此種結構server
實現難度:通常對象
普遍程度:比較普遍接口
模板方法模式ip
要點:其實,一個稱之爲模板的abstract類,當中的一部分計算過程是abstract,若干個子類,針對不一樣的狀況,對abstract進行不一樣的實現。it
典型場景:和策略模式差很少,區別在於,對於計算過程徹底不一樣的場景,採用策略模式,一小部分不一樣的場景,採用模板方法模式。pip
實現難度:通常模板
普遍程度:比較普遍
咱們其實能夠把策略模式理解爲一種特殊的模板方法模式,空模板。
觀察者模式
要點:一個Observer的interface,多個Observer實現類,主題subject interface及實現類,可以動態添加刪除observer,某些操做發生的時候,通知observer。
典型場景:系統發生某些時間的狀況下,須要採用郵件、短信等形式通知相關干係人。
實現難度:通常
普遍程度:比較普遍
迭代子模式
略過,參考jdk當中集合類的iterator的使用和實現便可。
責任鏈模式
要點: 有多個對象,每一個對象持有對下一個對象的引用,這樣就會造成一條鏈,請求在這條鏈上傳遞,直到某一對象決定處理該請求。
典型場景:netty的handler pipeline
實現難度:通常
普遍程度:比較普遍
命令模式
要點:一個命令的發起者(invoker),一個命令的接受者(receiver),一個是命令自己(command)。
實現難度:比較難以理解
普遍程度:反正我不多用