設計模式整理總結

2022-04-08 14:25:00 字數 2509 閱讀 9470

應用設計模式必須對語言的機制深入理解,如介面與抽象類的區別

模式名稱

使用描述

類圖應用場景

單例模式

判斷是否為空,有則返回無則新建

...乙個執行時內全域性資源唯一並可以全域性呼叫

工廠方法

暴露方法,過程下放(方法與實現分離),有依賴

...一維分類討論

抽象工廠

介面內定義實體類別,具體工廠實現生產,有依賴

...多維分類討論

建造者導演類賴建造介面並定義建造介面的流程規範,具體建造類實現各個部分、環節;建造者與工廠的區別是建造者用於構造多部分組成的複雜物件

...流程固定,型別及環節區域性多變

原型模式

轉殖介面,轉殖物件

...資源較多,需要複製上下文

pool模式

管理物件的重用。獲取物件時有則從棧彈出沒有例項則新建

在建立物件比較昂貴,或者對於特定型別能夠建立的物件數目有限制時

模式名稱

使用描述

類圖應用場景

介面卡介面卡者統

一、協調者也,適配類依賴被協調者

。。。功能一致但是api繁多,需要統一

橋接將依賴元素雙方都抽象化,執行時繫結具體物件

物件動態繫結,要求不同維度元素松耦合(組合》繼承)

組合組合者吞雲吐霧。為了多層巢狀,組合者要實現與其成員的根類同樣的的抽象結構,根據抽象類可以有抽象成員的特性,吞進(包括自己)抽象陣列中,吐出各自實現。組合不同維度實體

物件巢狀依賴

裝飾者裝飾者即強化、裝飾之用,所以不能更改方法名,故應實現物件介面,並將物件介面組合到內部成員,裝飾者從而對兄弟類進行包裝wrap裝飾

物件行為、職責可修改、可增加

外觀統一子系統api到乙個api裡面

客戶端要求提供統一介面

享元工廠

享元即共享單元,將基礎構成元素設定為享元,根據key從享元工廠的享元池中獲取執行時的享元,沒有則新建;可以減少記憶體占用

需要命中快取,利用元素、狀態有限性解決效能問題

****與實體實現同一介面,並將實體組合到內部成員,對外只提供**;或者讓**繼承實體,既將生成的實現解耦,且對外完全隱藏了實體;

安全訪問、隱藏實體、簡單裝飾

依賴注入

將核心類的注入引數進行抽象/介面化,將屬性的建立生成與核心類解耦,解決注入引數的多樣性

配置多樣,實現多樣,類別多樣等

註冊容器

容器內新增陣列類結構當做中心儲存器

多個相同概念的物件需要儲存時,可以通過操作鍵值對型別結構來訪問鍵值,而不用列成多個屬性

service locator服務定位器

松耦合,將類與例項 繫結

模式名稱

使用描述

類圖應用場景

職責鏈/責任鏈

干係人實現介面,在責任鏈處理類中遍歷/遞迴干係人去處理,直到責任到人

多個物件均有處理請求的機會,請求不清楚干係人具體是誰,責任執行時才能明確或者責任人為決定,需要解決責任的不確定性

命令請求抽象成類,請求者、接收者分別依賴請求類

請求者與接收者要求解耦,請求

直譯器重新解釋文法

效能要求不高,文法與表示表達解耦

迭代器由聚合體建立迭代器,迭代器通過聚合體count等來順序訪問

無權訪問內部卻要訪問全部子元素

中介者中介即平台,實體物件自主出入中介平台,當有實體與中介通訊,中介則更新內部的實體列表

多個實體物件需要複雜通訊,中介者不生產資訊

備忘錄實體物件可對外生成狀態備忘,並可由備忘恢復狀態,管理者管理備忘列表

不破壞封裝性又需要獲取、儲存、恢復物件的內部狀態

觀察者發布/訂閱模式,訂閱者自有更新實現,目標新增訂閱者佇列後,目標變化則通知訂閱者佇列更新

目標生產資訊,處理物件可變

狀態根據狀態建立實體,有效限制行為許可權。實體實現狀態處理的介面,呼叫者主動呼叫;這是種比狀態的條件判斷更優雅、乾淨的處理方式

實體多種狀態且其行為差異大,實體狀態變化會引起外在變化,條件複雜實體只能根據狀態產生變化

策略呼叫者應變後生成策略,再呼叫相應策略的被使用的方法,實現策略的快速切換

條件狀況複雜多變,需要多種策略;物件行為在執行時決定

模板方法

父類提取公共方法,子類實現可變方法,並由鉤子方法反向控制父類

複雜演算法可以拆分為模板方法和父類具體方法

訪問者模式

乙個物件將操作外包到另乙個物件,以簡化專注點。乙個使用visitor模式的客戶必須建立乙個concretevisitor物件,然後遍歷該物件結構,並用該訪問者訪問每乙個元素。當乙個元素被訪問時它呼叫對應它的類的visitor操作,如有必要該元素將自身作為操作的乙個引數以便該訪問者訪問它的狀態。一般被訪問者通過引數注入方式或者組合依賴方式被訪問

需要將元素的操作從元素組中分離解耦出來——元素的分離;需要將操作分離出來當做更細粒度的物件——操作的分離;

設計模式整理 設計模式總覽

1 抽象工廠模式 abstract factory 提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。當需要產生產品物件家族時使用此模式。2 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化,即將乙個類的例項延遲到其子類。延遲子類的...

Swift設計模式整理

swift設計模式的入門讀物。各個模式詳細介紹請自行搜尋網文,部落格,也可以檢視下面的參考文章。讀懂 在網上查詢各種對應設計模式的含義 再次回來讀 並聯絡含義 no.name cn name en type 1 模式 proxy 結構型2 外觀模式 facade 3裝飾模式 decorator 4組...

設計模式歸納整理

1 前言 類,方法 是一種抽象等級 組織等級,復用等級,即 我們用類來組織我們的 對應業務模型,解決業務問題.類和方法 可以理解為 目錄和檔案的關係,目錄只管組織,具體內容在檔案中,檔案包括裡面的內容,但不是 設計模式是老手針對 組織的經驗,它不能幫你實現任何功能,但功能必須依賴於組織,就像檔案必須...