以前寫過幾篇設計模式的詳細解釋,今天在這里不詳細介紹,有興趣了解的可以去看前幾篇隨筆,今天就簡單的介紹我們常用的設計模式.
(1)工廠模式
簡單工廠模式解決的問題是如何去實例化一個合適的對象.
簡單工廠模式的核心思想就是:有一個專門的類來負責實例過程,范式出現大量產品需要創建,並且具有共同的接口時,可以通過工廠方法模式進行創建,比如說寫技能是一系列類,那么就可以使用工廠模式創建.
(2)代理模式:
一個是真正的需要你訪問的對象(目標類),一個是代理對象,真正對象與代理對象實現同一個接口,先訪問代理類再訪問真正要訪問的對象.
代理模式就是多一個代理類出來,替原對象進行一些操作,比如我們在租房子的時候會去找中介,為什么呢?因為你對該地區房屋信息掌握不夠全面,希望找一個更熟悉的人去幫你做,此處的代理就是這個意思.再如我們有的時候打官司,我們需要請律師,因為律師在法律方面有專長,可以替我們進行操作,表達我們的想法.
代理模式的應用場景:
如果已有的方法在使用的時候需要對原來的方法進行改進,此時有兩個方法:
1>修改原有的方法來適應,這樣違反了"對擴展開放,對修改關閉"的原則
2>就是采用一個代理類調用原有的方法,且對產生的結果進行監控,這種方法就是代理模式.使用代理模式,可以將功能划分的更加清晰,有助於后期維護
(3)策略模式:
定義一系列算法,並將每個算法封裝起來,使他們可以相互替換,且算法的變化不會影響到使用算法的客戶.策略模式的決定權在用戶,系統本身提供不同算法的實現,新增或者刪除算法,對各種算法做封裝,因此,策略模式多用在算法決策系統中,外部用戶只需決定用哪個算法即可
(4)觀察者模式:
觀察者模式很好理解,類似於郵件訂閱和RSS訂閱,當我們瀏覽一些博客或wiki時,經常會看到RSS圖標,當你訂閱了該文章,如果后續有更新,會及時通知你.其實簡單來講就一句話:當一個對象變化時,其它依賴該對象的對象都會收到通知,並且隨着變化,對象之間是一種一對多的關系
(5)單例對象:
這是一種常用的設計模式,在C#應用中,單例對象能保證在一個CLR中,該對象只有一個實例存在.
優點:
1>某些類創建比較頻繁,對於一些大型的對象,這是一筆很大的開銷
2>省去了new操作符,降低了系統內存的使用頻率,減輕GC壓力
3>有些類如交易所得核心交易引擎,控制着交易流程,如果該類可以創建多個的話,系統完全亂了(比如一個軍隊出現多個司令員同時指揮,肯定會亂成一團),所以只有使用單例模式,才能保證核心交易服務器獨立控制整個流程
設計模式還有很多,在此不一一贅述,就說幾個常見的熟悉的設計模式.
