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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式(Design Pattern)

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

簡介?


設計模式(Design Pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟件開發人員所采用。設計模式是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發人員經過相當長的一段時間的試驗和錯誤總結出來的。

設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式于己于他人于系統都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重復發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。

GOF(Gang of Four)


在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名為?Design Patterns - Elements of Reusable Object-Oriented Software(中文譯名:設計模式 - 可復用的面向對象軟件元素)?的書,該書首次提到了軟件開發中設計模式的概念。

四位作者合稱?GOF(四人幫,全拼 Gang of Four)。他們所提出的設計模式主要是基于以下的面向對象設計原則。

  • 對接口編程而不是對實現編程。
  • 優先使用對象組合而不是繼承。

使用


設計模式在軟件開發中的兩個主要用途。

開發人員的共同平臺

設計模式提供了一個標準的術語系統,且具體到特定的情景。例如,單例設計模式意味著使用單個對象,這樣所有熟悉單例設計模式的開發人員都能使用單個對象,并且可以通過這種方式告訴對方,程序使用的是單例模式。

最佳的實踐

設計模式已經經歷了很長一段時間的發展,它們提供了軟件開發過程中面臨的一般問題的最佳解決方案。學習這些模式有助于經驗不足的開發人員通過一種簡單快捷的方式來學習軟件設計。

六大原則


1、開閉原則(Open Close Principle)

開閉原則的意思是:對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。簡言之,是為了使程序的擴展性好,易于維護和升級。想要達到這樣的效果,我們需要使用接口和抽象類,后面的具體設計中我們會提到這點。

2、里氏代換原則(Liskov Substitution Principle)

里氏代換原則是面向對象設計的基本原則之一。 里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。LSP 是繼承復用的基石,只有當派生類可以替換掉基類,且軟件單位的功能不受到影響時,基類才能真正被復用,而派生類也能夠在基類的基礎上增加新的行為。里氏代換原則是對開閉原則的補充。實現開閉原則的關鍵步驟就是抽象化,而基類與子類的繼承關系就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規范。

3、依賴倒轉原則(Dependence Inversion Principle)

這個原則是開閉原則的基礎,具體內容:針對接口編程,依賴于抽象而不依賴于具體。

4、接口隔離原則(Interface Segregation Principle)

這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。它還有另外一個意思是:降低類之間的耦合度。由此可見,其實設計模式就是從大型軟件架構出發、便于升級和維護的軟件設計思想,它強調降低依賴,降低耦合。

5、迪米特法則,又稱最少知道原則(Demeter Principle)

最少知道原則是指:一個實體應當盡量少地與其他實體之間發生相互作用,使得系統功能模塊相對獨立。

6、合成復用原則(Composite Reuse Principle)

合成復用原則是指:盡量使用合成/聚合的方式,而不是使用繼承。

分類


設計模式有兩種分類方法,即根據模式的目的來分和根據模式的作用的范圍來分。

1. 根據目的來分

根據模式是用來完成什么工作來劃分,這種方式可分為創建型模式、結構型模式和行為型模式?3 種。

  • 創建型模式:用于描述“怎樣創建對象”,它的主要特點是“將對象的創建與使用分離”。GoF 中提供了單例、原型、工廠方法、抽象工廠、建造者等 5 種創建型模式。
  • 結構型模式:用于描述如何將類或對象按某種布局組成更大的結構,GoF 中提供了代理、適配器、橋接、裝飾、外觀、享元、組合等 7 種結構型模式。
  • 行為型模式:用于描述類或對象之間怎樣相互協作共同完成單個對象都無法單獨完成的任務,以及怎樣分配職責。GoF 中提供了模板方法、策略、命令、職責鏈、狀態、觀察者、中介者、迭代器、訪問者、備忘錄、解釋器等 11 種行為型模式。
  • 2. 根據作用范圍來分

    根據模式是主要用于類上還是主要用于對象上來分,這種方式可分為類模式和對象模式兩種。

  • 類模式:用于處理類與子類之間的關系,這些關系通過繼承來建立,是靜態的,在編譯時刻便確定下來了。GoF中的工廠方法、(類)適配器、模板方法、解釋器屬于該模式。
  • 對象模式:用于處理對象之間的關系,這些關系可以通過組合或聚合來實現,在運行時刻是可以變化的,更具動態性。GoF 中除了以上 4 種,其他的都是對象模式。
  • GoF 的 23 種設計模式的分類表范圍\目的創建型模式結構型模式行為型模式
    類模式工廠方法(類)適配器

    模板方法

    解釋器

    對象模式單例
    原型
    抽象工廠
    建造者
    代理
    (對象)適配器
    橋接
    裝飾
    外觀
    享元
    組合

    策略
    命令
    狀態

    職責鏈
    觀察者
    中介者
    迭代器
    訪問者
    備忘錄

    ?

    功能?


    序號設計模式中文名功能
    1Factory Pattern工廠方法模式定義一個用于創建產品的接口,由子類決定生產什么產品。
    2Abstract Factory Pattern抽象工廠模式提供一個創建產品族的接口,其每個子類可以生產一系列相關的產品。
    3Singleton Pattern單例模式某個類只能生成一個實例,該類提供了一個全局訪問點供外部獲取該實例,其拓展是有限多例模式。
    4Builder Pattern建造者模式將一個復雜對象分解成多個相對簡單的部分,然后根據不同需要分別創建它們,最后構建成該復雜對象。
    5Prototype Pattern原型模式將一個對象作為原型,通過對其進行復制而克隆出多個和原型類似的新實例。
    6Adapter Pattern適配器模式將一個類的接口轉換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。
    7Bridge Pattern橋接模式將抽象與實現分離,使它們可以獨立變化。它是用組合關系代替繼承關系來實現,從而降低了抽象和實現這兩個可變維度的耦合度。
    8Composite Pattern組合模式將對象組合成樹狀層次結構,使用戶對單個對象和組合對象具有一致的訪問性。
    9Decorator Pattern裝飾模式動態的給對象增加一些職責,即增加其額外的功能。
    10Facade Pattern外觀模式為多個復雜的子系統提供一個一致的接口,使這些子系統更加容易被訪問。
    11Flyweight Pattern享元模式運用共享技術來有效地支持大量細粒度對象的復用。
    12Proxy Pattern代理模式為某對象提供一種代理以控制對該對象的訪問。即客戶端通過代理間接地訪問該對象,從而限制、增強或修改該對象的一些特性。
    13Chain of Responsibility Pattern職責鏈模式把請求從鏈中的一個對象傳到下一個對象,直到請求被響應為止。通過這種方式去除對象之間的耦合。
    14Visitor Pattern訪問者模式在不改變集合元素的前提下,為一個集合中的每個元素提供多種訪問方式,即每個元素有多個訪問者對象訪問。
    15Interpreter Pattern解釋器模式提供如何定義語言的文法,以及對語言句子的解釋方法,即解釋器。
    16Iterator Pattern迭代器模式提供一種方法來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示。
    17Mediator Pattern中介者模式定義一個中介對象來簡化原有對象之間的交互關系,降低系統中對象間的耦合度,使原有對象之間不必相互了解。
    18Memento Pattern備忘錄模式在不破壞封裝性的前提下,獲取并保存一個對象的內部狀態,以便以后恢復它。
    19Observer Pattern觀察者模式多個對象間存在一對多關系,當一個對象發生改變時,把這種改變通知給其他多個對象,從而影響其他對象的行為。
    20Strategy Pattern策略模式定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的改變不會影響使用算法的客戶。
    21State Pattern狀態模式允許一個對象在其內部狀態發生改變時改變其行為能力。
    22Command Pattern命令模式將一個請求封裝為一個對象,使發出請求的責任和執行請求的責任分割開。
    23Template Pattern模板方法模式定義一個操作中的算法骨架,而將算法的一些步驟延遲到子類中,使得子類可以不改變該算法結構的情況下重定義該算法的某些特定步驟。

    參考文章

    https://design-patterns.readthedocs.io/zh_CN/latest/

    http://c.biancheng.net/view/1320.html

    https://www.runoob.com/design-pattern/design-pattern-intro.html

    總結

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

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