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