程式設計中所使用的23中模式

2022-04-10 05:20:51 字數 4399 閱讀 6080

1、factory 工廠模式

工廠模式:客戶類和工廠類分開。消費者任何時候需要某種產品,只需向工廠請求即可。消費者無須修改就可以接納新產品。缺點是當產品修改時,工廠類也要做相應的修改。如:如何建立及如何向客戶端提供。

2、builder 建造模式

建造模式:將產品的內部表象和產品的生成過程分割開來,從而使乙個建造過程生成具有不同的內部表象的產品物件。建造模式使得產品內部表象可以獨立的變化,客戶不必知道產品內部組成的細節。建造模式可以強制實行一種分步驟進行的建造過程。

3、factory method 工廠方法模式

工廠方法模式:核心工廠類不再負責所有產品的建立,而是將具體建立的工作交給子類去做,成為乙個抽象工廠角色,僅負責給出具體工廠類必須實現的介面,而不接觸哪乙個產品類應當被例項化這種細節。

4、prototype 原始模型模式

原始模型模式:通過給出乙個原型物件來指明所要建立的物件的型別,然後用複製這個原型物件的方法建立出更多同型別的物件。原始模型模式允許動態的增加或減少產品類,產品類不需要非得有任何事先確定的等級結構,原始模型模式適用於任何的等級結構。缺點是每乙個類都必須配備乙個轉殖方法。

5、singleton 單例模式

單例模式:單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項單例模式。單例模式只應在有真正的「單一例項」的需求時才可使用。 [b:9ceca65206]結構型模式[/b:9ceca65206]

6、adapter 介面卡(變壓器)模式

介面卡(變壓器)模式:把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面原因不匹配而無法一起工作的兩個類能夠一起工作。適配類可以根據引數返還乙個合適的例項給客戶端。

7、bridge 橋梁模式

橋梁模式:將抽象化與實現化脫耦,使得二者可以獨立的變化,也就是說將他們之間的強關聯變成弱關聯,也就是指在乙個軟體系統的抽象化和實現化之間使用組合/聚合關係而不是繼承關係,從而使兩者可以獨立的變化。

8、composite

合成模式:合成模式將物件組織到樹結構中,可以用來描述整體與部分的關係。合成模式就是乙個處理物件的樹結構的模式。合成模式把部分與整體的關係用樹結構表示出來。合成模式使得客戶端把乙個個單獨的成分物件和由他們復合而成的合成物件同等看待。

9、decorator 裝飾模式

裝飾模式:裝飾模式以對客戶端透明的方式擴充套件物件的功能,是繼承關係的乙個替代方案,提供比繼承更多的靈活性。動態給乙個物件增加功能,這些功能可以再動態的撤消。增加由一些基本功能的排列組合而產生的非常大量的功能。例如:mary過完輪到sarly過生日,還是不要叫她自己挑了,不然這個月伙食費肯定玩完,拿出我去年在華山頂上照的**,在背面寫上「最好的的禮物,就是愛你的fita」,再到街上禮品店買了個像框(賣禮品的mm也很漂亮哦),再找隔壁搞美術設計的mike設計了乙個漂亮的盒子裝起來……,我們都是decorator,最終都在修飾我這個人呀,怎麼樣,看懂了嗎? 

10、facade  門面模式 

11、flyweight 享元模式

享元模式:flyweight在拳擊比賽中指最輕量級。享元模式以共享的方式高效的支援大量的細粒度物件。享元模式能做到共享的關鍵是區分內蘊狀態和外蘊狀態。內蘊狀態儲存在享元內部,不會隨環境的改變而有所不同。外蘊狀態是隨環境的改變而改變的。外蘊狀態不能影響內蘊狀態,它們是相互獨立的。將可以共享的狀態和不可以共享的狀態從常規類中區分開來,將不可以共享的狀態從類裡剔除出去。客戶端不可以直接建立被共享的物件,而應當使用乙個工廠物件負責建立被共享的物件。享元模式大幅度的降低記憶體中物件的數量。每天跟mm發簡訊,手指都累死了,最近買了個新手機,可以把一些常用的句子存在手機裡,要用的時候,直接拿出來,在前面加上mm的名字就可以傳送了,再不用乙個字乙個字敲了。共享的句子就是flyweight,mm的名字就是提取出來的外部特徵,根據上下文情況使用。

12、proxy **模式

**模式:**模式給某乙個物件提供乙個**物件,並由**物件控制對源物件的引用。**就是乙個人或乙個機構代表另乙個人或者乙個機構採取行動。某些情況下,客戶不想或者不能夠直接引用乙個物件,**物件可以在客戶和目標物件直接起到中介的作用。客戶端分辨不出**主題物件與真實主題物件。**模式可以並不知道真正的被**物件,而僅僅持有乙個被**物件的介面,這時候**物件不能夠建立被**物件,被**物件必須有系統的其他角色代為建立並傳入。

13、chain of responsibleity  責任鏈模式

責任鏈模式:在責任鏈模式中,很多物件由每乙個物件對其下家的引用而接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。客戶並不知道鏈上的哪乙個物件最終處理這個請求,系統可以在不影響客戶端的情況下動態的重新組織鏈和分配責任。處理者有兩個選擇:承擔責任或者把責任推給下家。乙個請求可以最終不被任何接收端物件所接受。

14、command 命令模式

命令模式:命令模式把乙個請求或者操作封裝到乙個物件中。命令模式把發出命令的責任和執行命令的責任分割開,委派給不同的物件。命令模式允許請求的一方和傳送的一方獨立開來,使得請求的一方不必知道接收請求的一方的介面,更不必知道請求是怎麼被接收,以及操作是否執行,何時被執行以及是怎麼被執行的。系統支援命令的撤消。

15、interpreter 直譯器模式

直譯器模式:給定乙個語言後,直譯器模式可以定義出其文法的一種表示,並同時提供乙個直譯器。客戶端可以使用這個直譯器來解釋這個語言中的句子。直譯器模式將描述怎樣在有了乙個簡單的文法後,使用模式設計解釋這些語句。在直譯器模式裡面提到的語言是指任何直譯器物件能夠解釋的任何組合。在直譯器模式中需要定義乙個代表文法的命令類的等級結構,也就是一系列的組合規則。每乙個命令物件都有乙個解釋方法,代表對命令物件的解釋。命令物件的等級結構中的物件的任何排列組合都是乙個語言。

16、iterator 迭代子模式

迭代子模式:迭代子模式可以順序訪問乙個聚集中的元素而不必暴露聚集的內部表象。多個物件聚在一起形成的總體稱之為聚集,聚集物件是能夠包容一組物件的容器物件。迭代子模式將迭代邏輯封裝到乙個獨立的子物件中,從而與聚集本身隔開。迭代子模式簡化了聚集的介面。每乙個聚集物件都可以有乙個或乙個以上的迭代子物件,每乙個迭代子的迭代狀態可以是彼此獨立的。迭代演算法可以獨立於聚集角色變化。

17、mediator 調停者模式

調停者模式:調停者模式包裝了一系列物件相互作用的方式,使得這些物件不必相互明顯作用。從而使他們可以鬆散偶合。當某些物件之間的作用發生改變時,不會立即影響其他的一些物件之間的作用。保證這些作用可以彼此獨立的變化。調停者模式將多對多的相互作用轉化為一對多的相互作用。調停者模式將物件的行為和協作抽象化,把物件在小尺度的行為上與其他物件的相互作用分開處理。

18、memento 備忘錄模式

備忘錄模式:備忘錄物件是乙個用來儲存另外乙個物件內部狀態的快照的物件。備忘錄模式的用意是在不破壞封裝的條件下,將乙個物件的狀態捉住,並外部化,儲存起來,從而可以在將來合適的時候把這個物件還原到儲存起來的狀態。

19、observer 觀察者模式

觀察者模式:觀察者模式定義了一種一隊多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態上發生變化時,會通知所有觀察者物件,使他們能夠自動更新自己。想知道咱們公司最新mm情報嗎?加入公司的mm情報郵件組就行了,tom負責蒐集情報,他發現的新情報不用乙個乙個通知我們,直接發布給郵件組,我們作為訂閱者(觀察者)就可以及時收到情報啦 

20、state  狀態模式

狀態模式:狀態模式允許乙個物件在其內部狀態改變的時候改變行為。這個物件看上去象是改變了它的類一樣。狀態模式把所研究的物件的行為包裝在不同的狀態物件裡,每乙個狀態物件都屬於乙個抽象狀態類的乙個子類。狀態模式的意圖是讓乙個物件在其內部狀態改變的時候,其行為也隨之改變。狀態模式需要對每乙個系統可能取得的狀態創立乙個狀態類的子類。當系統的狀態變化時,系統便改變所選的子類。

21、strategy 策略模式

策略模式:策略模式針對一組演算法,將每乙個演算法封裝到具有共同介面的獨立的類中,從而使得它們可以相互替換。策略模式使得演算法可以在不影響到客戶端的情況下發生變化。策略模把行為和環境分開。環境類負責維持和查詢行為類,各種演算法在具體的策略類中提供。由於演算法和環境獨立開來,演算法的增減,修改都不會影響到環境和客戶端。

22、template method  模板方法模式

模板方法模式:模板方法模式準備乙個抽象類,將部分邏輯以具體方法以及具體構造子的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。先制定乙個頂級邏輯框架,而將邏輯的細節留給具體的子類去實現。

23、visitor  訪問者模式

訪問者模式:訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構可以保持不變。訪問者模式適用於資料結構相對未定的系統,它把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由的演化。訪問者模式使得增加新的操作變的很容易,就是增加乙個新的訪問者類。訪問者模式將有關的行為集中到乙個訪問者物件中,而不是分散到乙個個的節點類中。當使用訪問者模式時,要將盡可能多的物件瀏覽邏輯放在訪問者類中,而不是放到它的子類中。訪問者模式可以跨過幾個類的等級結構訪問屬於不同的等級結構的成員類。

23種程式設計模式

合格程式設計師需要不斷提公升自己就必須去新角度了解並掌握新的知識,至少要做到擴充自己的知識面。今天了解一下程式的23種設計模式,後期針對幾種設計模式一起深入學習 研究。程式的設計模式依據型別進行劃分,可分為創造型 結構型和行為型三種 1 建立型模式 這些設計模式提供了一種在建立物件的同時隱藏建立邏輯...

23 中設計模式

一 設計模式定義 設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。二 設計模式與框架 框架設計中必然要使用設計模式.另外,設計模式有助於對框架結構的理解,成熟的框架通常使用了多種設計模式,如果你熟悉這些設計模式,這會有助於你更好的使用框架。三 ...

23中設計模式

按照目的來分,設計模式可以分為建立型模式 結構型模式和行為型模式。建立型模式用來處理物件的建立過程 結構型模式用來處理類或者物件的組合 行為型模式用來對類或物件怎樣互動和怎樣分配職責進行描述。建立型模式用來處理物件的建立過程,主要包含以下5種設計模式 工廠方法模式 factory method pa...