設計模式大概分為三種:1)創(chuàng)建型2)結(jié)構(gòu)型3)行為型.
創(chuàng)建型模式:(如何創(chuàng)建對象)
1.工廠模式(FACTORY METHOD PATTERN)提供了一個簡單的決策類,他根據(jù)提供的數(shù)據(jù)返回一個抽象基類的多個子類中的一個.
2.抽象工廠模式(ABSTRACT FACTORY PATTERN)提供了一個創(chuàng)建并返回一系列相關對象的接口.他的主要目的是隔離要生成的具體類,這些類的實際類名隱藏才工廠類,客戶端根本不需要知道.
3.單件模式(SINGLETON PATTERN)是指某個類只能有一個實例,他提供了一個訪問該實例的全局訪問點.
4.生成器模式(BUILDER PATTERN)將一個復雜對象的構(gòu)建與他的表示分開,這樣就能根據(jù)程序的需要創(chuàng)建不同的表現(xiàn)形式.他有點類似抽象工廠模式,兩者都返回由許多方法和對象組成的類,差別在于,生成器是根據(jù)提供給他的數(shù)據(jù)一步一步地創(chuàng)建一個復雜對象.
5.原型模式(PROTOTYPE PATTERN)是先實例化一個類,然后拷貝或克隆該類來創(chuàng)建新的實例,可以用公有方法進一步修改.他能根據(jù)需要克隆類,在運行時添加或刪除類,問題在于如果類早就存在,則不能改變他們來增加需要的克隆方法,另外,間接引用其他類的類也不能被真正克隆.
結(jié)構(gòu)型模式:(如何組合對象)
1.適配器模式(ADAPTER PATTERN)可以使一個類的接口匹配另外一個接口.
2.組合模式(COMPOSITE PATTERN)對象的組合,他允許你構(gòu)建一棵由各種相關類組成的樹,其中任何一個對象既可以是一個組合,也可以是一個葉子.
3.代理模式(PROXY PATTERN)通常是一個簡單對象,他代替一個比較復雜的稍后會調(diào)用的對象,而且實例化該對象代價比較高.
4.享元模式(FLYWEIGHT PATTERN)用于共享對象,其中的每一個實例都不包含自己的狀態(tài),而是將狀態(tài)存儲在外部.把一部分的類數(shù)據(jù)移到類外部,在執(zhí)行方法時將數(shù)據(jù)傳遞進來.
5.外觀模式(FACADE PATTERN)對客戶屏蔽了復雜的子系統(tǒng)組件,并為一般用戶提供了一個簡單的程序接口,但他并沒有限制高級用戶在需要時使用深層的復雜的類.
6.橋接模式(BRIDGE PATTERN)將對象的接口和他的實現(xiàn)分離,這樣就可以獨立的改變他們.
7.裝飾模式(DECORATOR PATTERN)他可以動態(tài)地給對象添加功能.他和外觀模式的區(qū)別在于外觀模式是將復雜系統(tǒng)隱藏在一個簡單接口,而裝飾模式通過包裝一個類來增加功能.
行為型模式:(如何在對象之間通信)
1.職責鏈模式(CHAIN OF RESPONSIBILITY PATTERN)把請求從鏈中的一個對象傳遞到下一個對象,直到請求被響應.鏈中的每個對象都是"自治"的,他對其他對象一無所知,只判斷他本身能不能滿足請求,不能的話就轉(zhuǎn)到下一個,但你必須知道鏈中的最后一個對象是哪一個.
2.命令模式(COMMAND PATTERN)用簡單的對象表示軟件命令的執(zhí)行.他把一個申請?zhí)囟ú僮鞯恼埱蠓庋b到一個對象,并給這個對象一個眾所周知的接口.
3.解釋器模式(INTERPRETER PATTERN)提供一種如何把語言元素包含在程序中的定義.
4.迭代器模式(ITERATOR PATTERN)提供一種順序訪問一個類中的一系列數(shù)據(jù)的方式,他允許使用一個標準接口順序訪問一個數(shù)據(jù)列表或集合,而又不需知道數(shù)據(jù)內(nèi)部表示細節(jié).
5.中介者模式(MEDIATOR PATTERN)定義了如何用一個對象簡化對象之間的通信,使對象之間不必互相了解.
6.備忘錄(MEMENTO PATTERN)定義了如何保存一個類實例的內(nèi)容以便以后能恢復他
7.觀察者模式(OBSERVER PATTERN)定義了一種把改動通知給多個對象的方式.
8.狀態(tài)模式(STATE PATTERN)允許一個對象在其內(nèi)部狀態(tài)改變時修改他的行為.
9.策略模式(STRATEGY PATTERN)將算法封裝到類里.
10.模板方法模式(TEMPLATE METHOD PATTERN)提供了算法的一個抽象定義.
11.訪問者模式(VISITOR PATTERN)在不改變類的前提下,為類添加多種操作.