這個部分的主要任務就是使用各種方法建立(或組合)各種型別的物件,並向物件的使用者隱藏物件的建立過程。
定義乙個介面(抽象工廠),用於建立一系列相關或相互依賴的物件,而不需要指定它們的具體型別.在應用抽象工廠過程中,元件通過一系列的抽象工廠決定最終的結構,而元件的使用者則必須選擇使用其中乙個抽象工廠來建立自己所需結構的元件物件.抽象工廠一般扮演元件結構標準制度者的角色.
請參考*****
將乙個複雜物件的構建與 它的表示分開,使得同樣的構建過程可以建立出不同的物件.與抽象工廠相似,在生成器模式中,元件同樣是通過不同的生成器建立不同結構的物件,但不同的是,抽象工廠型別的介面是相同的,而生成器模式中可以通過不同的搭配構建不同結構的物件,相對於抽象工廠模式會更加靈活,但元件的使用者必須更加了解結構的細節.
請參考****
定義乙個建立物件的介面,讓子類(具體的建立者)決定例項化哪個型別的物件,目的是將物件的建立推遲到子類中完成,並向物件的使用者隱藏建立物件的過程與具體型別.對於一系列基於相同介面的子型別,可以通過使用工廠方法模式對使用者隱藏它們的具體型別和建立過程,而對於元件的使用者來講,則可以簡化對這一系列元件型別的應用.
請參考****
用原型模式例項指定建立物件的種類,並且通過複製這個原型來建立新的物件.通過乙個物件的複製建立更多的物件,這樣有兩方面的優勢:一是可以隱藏複雜物件的建立過程,而是可以提高物件的建立效率.
原型模式中複製物件時經常使用物件的clone()方法來完成,在c#中,你可以通過實現icloneable介面來實現.
請參考***
確保乙個類只有乙個例項,並提供乙個全域性訪問點.請參考***
結構型一般用於軟體的架構設計,它們讓乙個軟體體系更富有彈性,使之更容易進行修改、擴充套件和維護。
建立乙個介面卡元件作為中間人,它提供介面的轉換功能,使兩個不相關的或不相容的元件可以一起工作.請參考***
將抽象部分與它的實現部分分開,使它們都可以獨立地變化.請參考***
將物件組合成樹狀結構來表現」整體/部分」層次結構,使用客戶可以採用一致的方式來處理個別物件以及物件組合.請參考***
動態地將功能新增到物件上,相比生成子類更靈活、更富有彈性。請參考
設計模式學習--裝飾者模式(decorator pattern)
為子系統中的一組介面提供乙個一直的介面,定義了乙個高層介面,這個介面使得這一子系統更加容易使用.批處理的工作方式.請參考***
定義:運用共享技術有效的支援大量」輕量級」的物件.使用享元模式時,我們只建立乙個例項來管理大量的虛擬物件.請參考****
定義:為其它物件提供乙個**(佔位標識)以控制對這個物件的訪問.**模式一般用於處理開銷很大的物件,這時,應該根據需要在必要的時候才建立或載入這些資源.
比如,當你開啟乙個比較大型的、**並茂的work文件,你會發現文字會很快的顯示出來,而可能在你檢視到它的時候才會顯示出來。在這裡,我們可以認為word在處理文件時使用了**模式.我們知道,的處理對於系統來講,開銷會比較大,所以,在word中,當我們開啟乙個大型文件時,的位置會有乙個佔位符(**),然後在需要時(比如我們檢視到這部分時),才會載入這些,這樣就節約了系統資源,提高了處理速度與執行效率.
請參考****
行為模式用於做一些具體的工作,如實現某個軟體功能,它們的作用往往比前兩種型別的設計模式更加直觀。
定義:為解除請求的傳送與接收之間的耦合,而使多個物件都有機會處理這個請求.將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到乙個物件處理它.就像在流水線上生產一樣,一道工序中可能有多個工人在處理,如果有人處理了就轉到下一道工序(或者就此完工),如果沒有人加工它,它可能繼續在流水線中流轉,也可能做其它型別的處理.
此模式一般用於作業系統或網路環境的應用.請參考****
定義:將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援可取消的操作.比如,在大型資料庫系統中的日誌(log).日誌用於記錄對資料庫的一切操作,需要時我們可以將資料庫恢復到任一時刻的狀態.
定義:為一種語言或一套語法建立直譯器.
定義:提供一種方法順序訪問乙個集合中的各個元素,而又不需要暴露該物件的內部表示.請參考****
定義:用乙個中介物件來封裝一系列的物件互動.中介者使各物件不需要顯示地相互引用,從而使這些物件之間解耦,並可以獨立地改變它們之間的互動.中介者模式經常使用在大型的系統中,用於各子系統或物件之間執行排程工作.你應該知道房屋中介和婚姻中介是怎麼回事吧,這也差不多.
請參考****
定義:在不被破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣以後就可將該物件恢復到儲存狀態.和命令模式不一樣的是,備忘錄雖然也儲存物件的狀態,但它並不是完整的、佇列化的儲存,而是儲存某一時刻的物件狀態,在你需要恢復時,只能恢復到儲存過的時刻。比如儲存遊戲進度。
請參考****
定義:觀察者模式定義了物件之間一對多的依賴關係,當這個物件的狀態改變時,它會通知所有的依賴者(觀察者)接收新的資料,這些依賴者物件會根據最新的資料做出相應的更新.請參考*****
定義:允許物件在內部狀態改變時改變它的行為和特性,物件看起來好像修改了它的類.請參考設計模式學習--狀態模式(state pattern)
定義:定義了一系列的演算法,將它們獨立封裝,並且可以相互替換使用,這些演算法獨立於使用它們的元件,可以在元件中通過組合,靈活的改變其演算法型別.請參考
專案重構--使用策略模式
定義:定義一系列的演算法結構,並延續到其子類,子類在不改變演算法結構的同時,可以定義自己的具體實現.請參考*****
定義:對於元件中的操作,可以在不改變型別定義的前提下重新定義操作的具體實現.請參考****
python設計模式名片 python設計模式
直譯器模式 多用於dsl,領域專用語言,from pyparsing import word,oneormore,optional,group,suppress,alphanums word word alphanums command group oneormore word token supp...
資料庫設計模式 名值模式
三 名值模式 名值模式,通常用來描述在系統設計階段不能完全確定屬性的物件,這些物件的屬性在系統執行時會有很大的變更,或者是多個物件之間的屬性存在很大的差異。1.使用名值模式進行設計時,如果對 其他屬性 僅作瀏覽儲存 不作其它任何特殊處理,則通常會設計乙個 屬性模板 表,該錶的資料記錄在系統執行時動態...
價值鏈 商業模式名詞解釋11
1985年,哈佛商學院的麥可 波特教授在其所著的 競爭優勢 一書中首次提出了價值鏈的概念,指出它是對增加乙個企業的產品或服務的實用性或價值的一系列作業活動的描述,主要包括企業內部價值鏈 競爭對手價值鏈和行業價值鏈三部分。以顧客價值為中心。價值鏈主要是用於分析企業的價值生成機制,是乙個分析競爭優勢的工...