日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

GoF 的 23 种设计模式

發布時間:2023/12/10 asp.net 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GoF 的 23 种设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • [學習地址 —— 不錯的學習網站](http://c.biancheng.net/view/8374.html) : http://c.biancheng.net/view/8374.html
  • 創建型模式(5種)
    • 單例模式
    • 原型模型
    • 工廠模式
      • 簡單工廠模式(不算23種里面)
      • 工廠方法模式
      • 抽象工廠模式
    • 建造者模式
  • 結構型模式(7種)
    • 代理模式
    • 適配器模式
    • 橋接模式
    • 裝飾器模式
    • 外觀模式
    • 享元模式
    • 組合模式
  • 行為型模式(11種)
    • 模板方法模式
    • 策略模式
    • 命令模式
    • 責任鏈模式
    • 狀態模式
    • 觀察者模式
    • 中介者模式
    • 迭代器模式
    • 訪問者模式
    • 備忘錄模式
    • 解釋器模式
      • 一句話歸納設計模式

學習地址 —— 不錯的學習網站 : http://c.biancheng.net/view/8374.html

創建型模式(5種)

單例模式

單例(Singleton)模式的定義:指一個類只有一個實例,且該類能自行創建這個實例的一種模式。例如,Windows 中只能打開一個任務管理器,這樣可以避免因打開多個任務管理器窗口而造成內存資源的浪費,或出現各個窗口顯示內容的不一致等錯誤。

原型模型

原型(Prototype)模式的定義如下:用一個已經創建的實例作為原型,通過復制該原型對象來創建一個和原型相同或相似的新對象。在這里,原型實例指定了要創建的對象的種類。用這種方式創建對象非常高效,根本無須知道對象創建的細節。例如,Windows 操作系統的安裝通常較耗時,如果復制就快了很多。在生活中復制的例子非常多,這里不一一列舉了。

工廠模式

在日常開發中,凡是需要生成復雜對象的地方,都可以嘗試考慮使用工廠模式來代替。

工廠模式的定義:定義一個創建產品對象的工廠接口,將產品對象的實際創建工作推遲到具體子工廠類當中。這滿足創建型模式中所要求的“創建與使用相分離”的特點。

按實際業務場景劃分,工廠模式有 3 種不同的實現方式,分別是簡單工廠模式、工廠方法模式和抽象工廠模式。

簡單工廠模式(不算23種里面)

我們把被創建的對象稱為“產品”,把創建產品的對象稱為“工廠”。如果要創建的產品不多,只要一個工廠類就可以完成,這種模式叫“簡單工廠模式”。

簡單來說,簡單工廠模式有一個具體的工廠類,可以生成多個不同的產品,屬于創建型設計模式。簡單工廠模式不在 GoF 23 種設計模式之列。

簡單工廠模式每增加一個產品就要增加一個具體產品類和一個對應的具體工廠類,這增加了系統的復雜度,違背了“開閉原則”。

“工廠方法模式”是對簡單工廠模式的進一步抽象化,其好處是可以使系統在不修改原來代碼的情況下引進新的產品,即滿足開閉原則。

工廠方法模式

注意:當需要生成的產品不多且不會增加,一個具體工廠類就可以完成任務時,可刪除抽象工廠類。這時工廠方法模式將退化到簡單工廠模式。

抽象工廠模式

抽象工廠(AbstractFactory)模式的定義:是一種為訪問類提供一個創建一組相關或相互依賴對象的接口,且訪問類無須指定所要產品的具體類就能得到同族的不同等級的產品的模式結構。

抽象工廠模式是工廠方法模式的升級版本,工廠方法模式只生產一個等級的產品,而抽象工廠模式可生產多個等級的產品。

其缺點是:當產品族中需要增加一個新的產品時,所有的工廠類都需要進行修改。增加了系統的抽象性和理解難度。


從圖 2 可以看出抽象工廠模式的結構同工廠方法模式的結構相似,不同的是其產品的種類不止一個,所以創建產品的方法也不止一個

模式的應用場景
抽象工廠模式最早的應用是用于創建屬于不同操作系統的視窗構件。如 Java 的 AWT 中的 Button 和 Text 等構件在 Windows 和 UNIX 中的本地實現是不同的。

抽象工廠模式通常適用于以下場景:

  • 當需要創建的對象是一系列相互關聯或相互依賴的產品族時,如電器工廠中的電視機、洗衣機、空調等。
  • 系統中有多個產品族,但每次只使用其中的某一族產品。如有人只喜歡穿某一個品牌的衣服和鞋。
  • 系統中提供了產品的類庫,且所有產品的接口相同,客戶端不依賴產品實例的創建細節和內部結構。
  • 模式的擴展
    抽象工廠模式的擴展有一定的“開閉原則”傾斜性:

  • 當增加一個新的產品族時只需增加一個新的具體工廠,不需要修改原代碼,滿足開閉原則。
  • 當產品族中需要增加一個新種類的產品時,則所有的工廠類都需要進行修改,不滿足開閉原則。
  • 另一方面,當系統中只存在一個等級結構的產品時,抽象工廠模式將退化到工廠方法模式。

    建造者模式

    建造者(Builder)模式的定義:指將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表示,這樣的設計模式被稱為建造者模式。它是將一個復雜的對象分解為多個簡單的對象,然后一步一步構建而成。它將變與不變相分離,即產品的組成部分是不變的,但每一部分是可以靈活選擇的。

    建造者(Builder)模式和工廠模式的關注點不同:建造者模式注重零部件的組裝過程,而工廠方法模式更注重零部件的創建過程,但兩者可以結合使用。



    模式的應用場景

    文章目錄

        • [學習地址 —— 不錯的學習網站](http://c.biancheng.net/view/8374.html) : http://c.biancheng.net/view/8374.html
    • 創建型模式(5種)
      • 單例模式
      • 原型模型
      • 工廠模式
        • 簡單工廠模式(不算23種里面)
        • 工廠方法模式
        • 抽象工廠模式
      • 建造者模式
    • 結構型模式(7種)
      • 代理模式
      • 適配器模式
      • 橋接模式
      • 裝飾器模式
      • 外觀模式
      • 享元模式
      • 組合模式
    • 行為型模式(11種)
      • 模板方法模式
      • 策略模式
      • 命令模式
      • 責任鏈模式
      • 狀態模式
      • 觀察者模式
      • 中介者模式
      • 迭代器模式
      • 訪問者模式
      • 備忘錄模式
      • 解釋器模式
        • 一句話歸納設計模式

    結構型模式(7種)

    代理模式

    代理模式的定義與特點
    代理模式的定義:由于某些原因需要給某對象提供一個代理以控制對該對象的訪問。這時,訪問對象不適合或者不能直接引用目標對象,代理對象作為訪問對象和目標對象之間的中介。




    適配器模式

    橋接模式

    裝飾器模式

    裝飾器(Decorator)模式的定義:指在不改變現有對象結構的情況下,動態地給該對象增加一些職責(即增加其額外功能)的模式,它屬于對象結構型模式。

    外觀模式

    外觀模式的定義與特點

    外觀(Facade)模式又叫作門面模式,是一種通過為多個復雜的子系統提供一個一致的接口,而使這些子系統更加容易被訪問的模式。該模式對外有一個統一接口,外部應用程序不用關心內部子系統的具體細節,這樣會大大降低應用程序的復雜度,提高了程序的可維護性。


    享元模式



    組合模式

    組合模式的定義與特點
    組合(Composite Pattern)模式的定義:有時又叫作整體-部分(Part-Whole)模式,它是一種將對象組合成樹狀的層次結構的模式,用來表示“整體-部分”的關系,使用戶對單個對象和組合對象具有一致的訪問性,屬于結構型設計模式。




    文章目錄

        • [學習地址 —— 不錯的學習網站](http://c.biancheng.net/view/8374.html) : http://c.biancheng.net/view/8374.html
    • 創建型模式(5種)
      • 單例模式
      • 原型模型
      • 工廠模式
        • 簡單工廠模式(不算23種里面)
        • 工廠方法模式
        • 抽象工廠模式
      • 建造者模式
    • 結構型模式(7種)
      • 代理模式
      • 適配器模式
      • 橋接模式
      • 裝飾器模式
      • 外觀模式
      • 享元模式
      • 組合模式
    • 行為型模式(11種)
      • 模板方法模式
      • 策略模式
      • 命令模式
      • 責任鏈模式
      • 狀態模式
      • 觀察者模式
      • 中介者模式
      • 迭代器模式
      • 訪問者模式
      • 備忘錄模式
      • 解釋器模式
        • 一句話歸納設計模式

    行為型模式(11種)

    模板方法模式

    模板方法(Template Method)模式的定義如下:定義一個操作中的算法骨架,而將算法的一些步驟延遲到子類中,使得子類可以不改變該算法結構的情況下重定義該算法的某些特定步驟。它是一種類行為型模式。



    直接去掉vip就可以訪問…我超

    策略模式



    命令模式






    責任鏈模式

    責任鏈(Chain of Responsibility)模式的定義:為了避免請求發送者與多個請求處理者耦合在一起,于是將所有請求的處理者通過前一對象記住其下一個對象的引用而連成一條鏈;當有請求發生時,可將請求沿著這條鏈傳遞,直到有對象處理它為止。


    狀態模式

    狀態(State)模式的定義:對有狀態的對象,把復雜的“判斷邏輯”提取到不同的狀態對象中,允許狀態對象在其內部狀態發生改變時改變其行為。



    觀察者模式

    觀察者(Observer)模式的定義:指多個對象間存在一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。這種模式有時又稱作發布-訂閱模式、模型-視圖模式,它是對象行為型模式。


    中介者模式

    中介者(Mediator)模式的定義:定義一個中介對象來封裝一系列對象之間的交互,使原有對象之間的耦合松散,且可以獨立地改變它們之間的交互。中介者模式又叫調停模式,它是迪米特法則的典型應用。

    迭代器模式

    迭代器(Iterator)模式的定義:提供一個對象來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示。

    在日常開發中,我們幾乎不會自己寫迭代器。除非需要定制一個自己實現的數據結構對應的迭代器,否則,開源框架提供的 API 完全夠用。


    訪問者模式







    備忘錄模式

    備忘錄(Memento)模式的定義:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態,以便以后當需要時能將該對象恢復到原先保存的狀態。該模式又叫快照模式。




    解釋器模式

    解釋器(Interpreter)模式的定義:給分析對象定義一個語言,并定義該語言的文法表示,再設計一個解析器來解釋語言中的句子。也就是說,用編譯語言的方式來分析應用中的實例。這種模式實現了文法表達式處理的接口,該接口解釋一個特定的上下文。



    一句話歸納設計模式


    總結

    以上是生活随笔為你收集整理的GoF 的 23 种设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。