小菜學設計模式——設計模式總結之行爲型(2)

一、設計模式總結

    設計模式總共23個,可是經常使用的不到10個,下面就把這23個設計模式進行整理歸類,具體以下:設計模式

    1)建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。spa

    2)結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。設計

    3)行爲型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代器模式、職責鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式代理

二、行爲型設計模式

    1)備忘錄模式:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象以外保存這個狀態。這樣之後就能夠將該對象恢復到原先保存的狀態。對象

    備忘錄模式能夠避免暴露一些只應由對象A管理卻又必須存儲在對象A以外的信息。備忘錄模式把可能很複雜的對象A的內部信息對其餘對象屏蔽起來,從而保持了封裝邊界。原型


    2)狀態模式:當一個對象的內在狀態改變時容許改變其行爲,這個對象看起來像是改變了其類。it

    狀態模式提供了一個更好的辦法來組織與特定狀態相關的代碼,決定狀態轉移的邏輯不在的單塊的if或switch當中,而是分佈在各個狀態子類之中,因爲全部與狀態相關的代碼都存在於某個狀態子類中,因此經過定義新的子類能夠很容易地增長新的狀態和轉換。模板

    3)訪問者模式:表示一個做用於某對象結構中的各元素的操做。它使你能夠在不改變各元素類的前提下定義做用於這些元素的新操做。迭代器

    訪問這種增長具體的Element是困難的,但增長依賴於賦值對象結構的構件操做就變得容易。僅須要增長一個新的訪問者便可在一個對象結構上定義一個新的操做。若是你還記得那個男人和女人的狀態,大家你就會知道Element就是男人和女人,那麼這種結構一旦肯定是很難更改的,可是你卻能夠新增訪問者,好比結婚、生子等新的操做。引用

    4)中介者模式:用一箇中介對象來封裝一系列的對象交互。中介者使各對象不須要顯示地相互引用,從而使其耦合鬆散,並且能夠獨立地改變他們之間的交互。

    將集體行爲封裝一個單獨的中介者對象來避免大量對象相互鏈接的問題,中介者負責控制和協調一組對象間的交互。中介者充當一箇中介以時組中對象再也不相互顯示引用。這些對象僅僅知道中介者,從而減小相互鏈接是數目。實際上是迪米特原則(最少知識原則)的充分體現。

    5)解釋器模式:給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。

    若是一個特定類型的問題發生頻率足夠高,那麼就能夠考慮將該問題的各個實例表述爲一個簡單語言中的句子,也就是說經過構建一個解釋器,該解釋器解釋這些句子來解決該問題。

相關文章
相關標籤/搜索