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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式开篇

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

1. 設計模式簡介

  • 設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟件開發(fā)人員所采用。
  • 設計模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發(fā)人員經過相當長的一段時間的試驗和錯誤總結出來的。
  • 設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
  • 設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。
  • 項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重復發(fā)生的問題,以及該問題的核心解決方案。

2. 什么是 GOF?

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

? 圖書鏈接:https://book.douban.com/subject/1052241/

  • 四位作者合稱 GOF(四人幫,全拼 Gang of Four)

  • 他們所提出的設計模式主要是基于以下的面向對象設計原則:

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

3. 23種設計模式的類型

  • 根據設計模式的參考書 Design Patterns - Elements of Reusable Object-Oriented Software(中文譯名:設計模式 - 可復用的面向對象軟件元素) 中所提到的,總共有 23 種設計模式。

  • 這些模式可以分為三大類:

    • 創(chuàng)建型模式(Creational Patterns)
    • 結構型模式(Structural Patterns)
    • 行為型模式(Behavioral Patterns)
    • 還有另一類設計模式:J2EE 設計模式。
序號模式 & 描述包括
1創(chuàng)建型模式 這些設計模式提供了一種在創(chuàng)建對象的同時隱藏創(chuàng)建邏輯的方式,而不是使用 new 運算符直接實例化對象。這使得程序在判斷針對某個給定實例需要創(chuàng)建哪些對象時更加靈活。工廠模式(Factory Pattern)抽象工廠模式(Abstract Factory Pattern)單例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)
2結構型模式 這些設計模式關注類和對象的組合。繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。適配器模式(Adapter Pattern)橋接模式(Bridge Pattern)過濾器模式(Filter、Criteria Pattern)組合模式(Composite Pattern)裝飾器模式(Decorator Pattern)外觀模式(Facade Pattern)享元模式(Flyweight Pattern)代理模式(Proxy Pattern)
3行為型模式 這些設計模式特別關注對象之間的通信,負責對象間的高效溝通和職責委派。責任鏈模式(Chain of Responsibility Pattern)命令模式(Command Pattern)解釋器模式(Interpreter Pattern)迭代器模式(Iterator Pattern)中介者模式(Mediator Pattern)備忘錄模式(Memento Pattern)觀察者模式(Observer Pattern)狀態(tài)模式(State Pattern)空對象模式(Null Object Pattern)策略模式(Strategy Pattern)模板模式(Template Pattern)訪問者模式(Visitor Pattern)
4J2EE 模式 這些設計模式特別關注表示層。這些模式是由 Sun Java Center 鑒定的。MVC 模式(MVC Pattern)業(yè)務代表模式(Business Delegate Pattern)組合實體模式(Composite Entity Pattern)數據訪問對象模式(Data Access Object Pattern)前端控制器模式(Front Controller Pattern)攔截過濾器模式(Intercepting Filter Pattern)服務定位器模式(Service Locator Pattern)傳輸對象模式(Transfer Object Pattern)

4. 模式之間的關系

5. 設計模式六大原則與核心思想

5.1 六大原則

1、開閉原則(Open Close Principle)

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

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

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

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

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

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

這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。它還有另外一個意思是:降低類之間的耦合度。

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

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

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

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

5.2 核心思想

  • 找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起。
  • 針對接口編程,而不是針對實現編程。
  • 為了交互對象之間的松耦合設計而努力
  • 6. 類之間的關系

    在類之間, 最常見的關系有:

  • 泛化/繼承(Generalization)
  • 實現(Realization)
  • 依賴(Dependency)
  • 關聯(lián)(Association)
  • 聚合(Aggregation)
  • 組合(Composition)
  • 6.1 泛化/繼承

    • 含義:繼承指的是一個類(稱為子類、子接口)繼承另外的一個類(稱為父類、父接口)的功能,并可以增加它自己的新功能的能力。
    • 代碼體現:在Java中繼承關系通過關鍵字extends明確標識
    • 箭頭指向:繼承用一條帶空心三角箭頭的實線表示,從子類指向父類,或者子接口指向父接口。

    6.2 實現

    • 含義:實現指的是一個class類實現interface接口(可以是多個)的功能,實現是類與接口之間最常見的關系。
    • 代碼體現:在Java中此類關系通過關鍵字implements明確標識
    • 箭頭指向:實現用一條帶空心三角箭頭的虛線表示,從類指向實現的接口。

    6.3 依賴

    • 含義:一種使用的關系,即一個類的實現需要另一個類的協(xié)助,要盡量不使用雙向的互相依賴.
      這種使用關系是具有偶然性的、臨時性的、非常弱的,類B的變化會影響到類A。
    • 代碼表現:局部變量、方法的參數或者對靜態(tài)方法的調用;類B作為方法參數(局部變量)被類A在某個method方法中使用
    • 箭頭指向:用帶箭頭的虛線表示,指向被使用者

    6.4 關聯(lián)

    • 含義:是一種擁有的關系,它使一個類知道另一個類的屬性和方法;
      這種關系比依賴更強、不存在依賴關系的偶然性、關系也不是臨時性的,一般是長期性的,而且雙方的關系一般是平等的。
      如:老師與學生,丈夫與妻子關聯(lián)可以是雙向的,也可以是單向的。雙向的關聯(lián)可以有兩個箭頭或者沒有箭頭,單向的關聯(lián)有一個箭頭。
    • 代碼體現:成員變量。被關聯(lián)類B以類的屬性形式出現在關聯(lián)類A中,也可能是關聯(lián)類A引用了一個類型為被關聯(lián)類B的全局變量。
    • 箭頭指向: 帶普通箭頭的實心線,指向被擁有者

    6.5 聚合

    • 含義:聚合是關聯(lián)關系的一種特例,它體現的是整體與部分的關系,即has-a的關系。
      此時整體與部分之間是可分離的,它們可以具有各自的生命周期,部分可以屬于多個整體對象,也可以為多個整體對象共享。
      比如計算機與CPU、公司與員工的關系等,比如一個航母編隊包括海空母艦、驅護艦艇、艦載飛機及核動力攻擊潛艇等。
    • 代碼體現:成員變量;和關聯(lián)關系是一致的,只能從語義級別來區(qū)分
    • 箭頭指向:帶空心菱形的實心線,菱形指向整體

    6.6 組合

    • 含義:組合也是關聯(lián)關系的一種特例,它體現的是一種contains-a的關系,這種關系比聚合更強,也稱為強聚合。它同樣體現整體與部分間的關系,但此時整體與部分是不可分的,整體的生命周期結束也就意味著部分的生命周期結束,
      比如人和人的大腦。比如公司和部門是整體和部分的關系,沒有公司就不存在部門。
    • 代碼體現:成員變量;和關聯(lián)關系是一致的,只能從語義級別來區(qū)分
    • 箭頭指向:帶實心菱形的實線,菱形指向整體

    6.7 強弱順序

    各種關系的強弱順序:泛化/繼承 = 實現 > 組合 > 聚合 > 關聯(lián) > 依賴

    6.8 一張圖融會貫通

    下面這張UML圖,比較形象地展示了各種類圖關系:

    總結

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

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