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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

【复习资料】设计模式

發布時間:2024/4/19 asp.net 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【复习资料】设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面向對象設計原則

  • 對于面向對象的軟件系統來說,在支持可維護性的同時,需要提高系統的可復用性。
  • 軟件的復用可以提高軟件的開發效率,提高軟件質量,節約開發成本,改善系統的可維護性。
  • 單一職責原則要求在軟件系統中,一個類只負責一個功能領域中的相應職責。
  • 開閉原則要求一個軟件實體應當對擴展開放,對修改關閉,即在不修改源代碼的基礎上擴展一個系統行為。
  • 里氏代換原則:在軟件中如果能夠使用基類對象,那么一定能使用其子類對象。
  • 依賴倒轉原則要求抽象不應該依賴于細節,細節應該依賴于抽象;要針對接口編程,不要針對實現編程。
  • 接口隔離原則要求客戶端不應該依賴那些它不需要的接口,即將一些大的接口細化成一些小的接口工客戶端使用。
  • 合成復用原則要求復用時盡量使用組合對象,而不使用繼承。
  • 迪米特法則要求一個軟件實體應當盡可能少的與其他實體發生相互作用。

  • 簡單工廠模式(類創建型模式)

  • 創建型模式對類的實例化過程進行了抽象。
  • 簡單工廠模式專門定義一個工廠類來負責創建具體產品類的實例,被創建的實例通常具有共同的抽象產品父類。
  • 簡單工廠模式的優點:實現對象的創建和對象的使用分離,將對象的創建交給專門的工廠類負責。
  • 簡單工廠模式的缺點:工廠類不夠靈活,增加新的具體產品需要修改工廠類的判斷邏輯代碼,而且產品較多時,工廠方法代碼將會非常復雜。
  • 簡單工廠模式包含三個角色:
    a. 工廠角色負責實現創建所有實例的內部邏輯。
    b. 抽象產品角色是創建的所有對象的父類,負責描述所有實例所有的公共接口。
    c. 具體產品角色是創建目標,所有創建的對象都充當這個角色的某個具體類的實例。
  • 在簡單工廠模式中,可以根據參數的不同返回不同類的實例。簡單工廠的要點在于:當你需要什么,只需要傳入一個正確的參數,就可以獲取你所需要的對象,而無須知道其創建細節。
  • 有些情況下,工廠類可以由抽象產品角色扮演,一個抽象產品類同時也是子類的工廠,也就是說把靜態工廠方法寫到抽象產品類中。
  • 有些情況下,工廠、抽象產品和具體產品三個角色可以合并,它們即是工廠,有通過靜態工廠方法創建一個自己的實例,通過合并,可以對簡單工廠模式進行簡化。

  • 創造者模式(對象創建型模式)

  • 創造者模式將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的實例。
  • 建造者模式是一步步創建一個復雜的對象,它允許用戶只通過指定復雜對象的類型和內容就可以構建它們,用戶不需要知道內部的具體構建細節。
  • 建造者模式的優點:
    a. 客戶端不必知道產品內部組成的細節,將產品本身與產品的創建過程解耦,使得相同的創建過程可以創建不同的產品對象。
    b. 每一個具體建造者都相對獨立,而與其他的具體建造者無關,因此可以很方便地替換具體建造者或增加新的具體建造者,符合開閉原則。
    c. 可以更加精細的控制產品的創建過程。
  • 建造者模式的缺點:
    a. 由于建造者模式所創建的產品一般都具有較多的共同點,其組成部分相似,因此其使用范圍受到一定的限制。
    b. 如果產品的內部變化復雜,可能會導致需要定義很多具體建造者類來實現這種變化,導致系統變得龐大。
  • 建造者模式包含如下四個角色:
    a. 抽象建造者為創建一個產品對象的各個部件指定抽象接口。
    b. 具體建造者實現了抽象建造者接口,實現各個部件的構造和裝配方法,定義并明確它所創建的復雜對象,也可以提供一個方法返回創建好的復雜產品對象。
    c. 產品角色是被構建的復雜對象,包含多個組成部件。
    d. 指揮者負責安排復雜對象的建造次序,指揮者與抽象建造者之間存在關聯關系,可以在其construct()建造方法中調用建造者對象的部件構造與裝配方法,完成復雜對象的建造。
  • 在建造者模式的結構中引入了一個指揮者類,該類的主要作用有兩個:
    a. 隔離了客戶與生產過程。
    b. 負責控制產品的生產過程。
  • 指揮者針對抽象建造者編程,客戶端只需要知道具體建造者的類型,即可通過指揮者類調動建造者的相關方法,返回一個完整的產品對象。
  • 建造者模式的簡化:
    a. 省略抽象建造者角色:如果系統只需要一個具體建造者可以省略抽象建造者。
    b. 省略指揮者角色:如果已經省略了抽象建造者,那么還可以省略指揮者,讓建造者扮演指揮者和建造者雙重角色。
  • 建造者模式與抽象工廠模式比較:
    a. 建造者模式返回一個完整的產品;抽象工廠模式返回一個產品族。
    b. 抽象工廠模式可以看做汽車配件工廠,生產一系列配件;建造者模式可以看做汽車組裝工廠,對配件進行組裝,生產出一個完整的汽車。

  • 原型模式(對象創建型模式)

  • 用原型實例指定創建對象的種類,并通過復制這些原型創建新的對象。原型模式允許一個對象再創建另一個可定制的對象,無須知道任何創建細節。
  • 原型模式的基本工作原理是通過將一個原型對象傳給那個要發動創建的對象,這個要發動創建的對象通過請求原型對象拷貝原型自己來實現創建過程。
  • 原型模式的優點:可以快速創建很多相同或相似的對象,簡化對象的創建過程,還可以保存對象的一些中間狀態。
  • 原型模式的缺點:需要為每一個類配備一個克隆方法,因此對已有類進行改造比較麻煩,需要修改其源代碼,并且在實現深克隆時需要編寫較為復雜的代碼。
  • 原型模式包含三個角色:
    a. 抽象原型類:定義具有克隆自己的方法的接口。
    b. 具體原型類:實現具體的克隆方法,在克隆方法中返回自己的一個克隆對象,讓一個原型克隆自身從而創建一個新的對象。
    c. 在客戶類:只需要直接實例化或通過工廠方法等方式創建一個對象,再通過調用該對象的克隆方法復制得到多個相同的對象。
  • 在淺克隆中,當對象被復制時它所包含的成員對象卻沒有被復制;在深克隆中,除了對象本身被復制外,對象包含的引用也被復制,也就是其中的成員對象也將復制。
  • 在Java語言中,通過覆蓋Object類的clone()方法可以實現淺克隆;如果需要實現深克隆,可以通過序列化等方式來實現。

  • 單例模式(對象創建型模式)

  • 單例模式的要點有三個:
    a. 單例類只能有一個實例。
    b. 它必須自行實例化這個實例。
    c. 它必須自行向整個系統提供這個實例。
    d. 提供全局訪問方法。
  • 單例類擁有一個私有構造函數,確保用戶無法通過new關鍵字直接實例化它。除此之外,該模式中包含一個靜態私有成員變量與靜態公有的工廠方法。
  • 該工廠方法負責檢驗實例的存在性并實例化自己,然后存儲在靜態成員變量中,以確保只有一個實例被創建。
  • 單例模式的優點:提供了對唯一實例的受控訪問并可以節約系統資源。
  • 單例模式的缺點:因為缺少抽象層而難以擴展,且單例類職責過重。
  • 餓漢式單例類:這個類被加載時,靜態變量instance會被初始化,此時類的私有構造函數會被調用,單例類的唯一實例將被創建。
  • 懶漢式單例類:這個類在第一次被引用時將自己實例化,在懶漢式單例類被加載時不會將自己實例化。

  • 適配器模式(類結構性模式或對象結構型模式)

  • 結構型模式描述如何將類或者對象結合在一起形成更大的結構。
  • 適配器模式用于將一個接口轉換成客戶希望的另一個接口,適配器模式使接口不兼容的那些類可以一起工作,其別名為包裝器。
  • 適配器模式的優點:將目標類和適配者類解耦,增加了類的透明性和復用性,同時系統的靈活性和擴展性都非常好,更換適配器或者增加新的適配器都非常方便,符合“開閉原則”。
  • 類適配器模式的缺點:適配器類在很多編程語言中不能同時適配多個適配者類。
  • 對象適配器模式的缺點:很難置換適配者類的方法。
  • 適配器模式包含四個角色:

    a. 目標抽象類定義客戶要用的特定領域的接口。
    b. 適配器類可以調用另一個接口,作為一個轉換器,對適配者和抽象目標類進行適配,它是適配器模式的核心。
    c. 適配者類是被適配的角色,它定義了一個已經存在的接口,這個接口需要適配
    d. 在客戶類中針對目標抽象類進行編程,調用在目標抽象類中定義的業務方法。

  • 默認適配者模式:當不需要全部實現接口提供的方法時,可以設計一個抽象類實現該接口,并為接口中每個方法提供一個默認實現(空方法),那么該抽象類的子類可有選擇地覆蓋父類的某些方法來實現需求,它適用于不想使用一個接口的所有方法的情況。
  • 默認適配者模式有三個角色:
    a. 適配者接口:適配者是被適配的對象。
    b. 默認適配器類:默認適配器類是默認適配器中適配器角色,它是該模式的核心。默認適配類使用空方法的形式實現了在接口中聲明的方法。
    c. 具體業務類:是適配器類的子類,在沒有引入適配器類之前,它需要實現適配者接口,因此需要實現在適配者接口中定義的所有方法,而一些無用的方法也提供空實現。為了簡化操作,在有了適配器類之后,可以直切繼承該適配器類,根據需要有選擇地覆蓋在適配器類中定義的方法。
  • 雙向適配器:在對象適配器的使用過程中,如果在適配器中同時包含對目標類和適配器類的引用,適配者可以通過他調用目標類的方法,目標類也可以通過它調用適配者類中的方法,那么該適配器就是一個雙向適配器。

  • 組合模式(對象結構型模式)

  • 組合模式用于組合多個對象形成樹形結構以表示“整體-部分”的結構層次。
  • 組合模式對單個對象(即葉子對象)和組合對象(即容器對象)的使用具有一致性。
  • 組合模式的關鍵是定義了一個抽象構件類,它既可以代表葉子,又可以代表容器,而客戶端針對該抽象構件類進行編程,無須知道它到底表示的是葉子還是容器,可以對其進行統一處理。
  • 組合模式的優點:

    a. 可以方便地對層次結構進行控制,客戶端調用簡單。
    b. 由于客戶端使用構件的一致性,簡化了客戶端代碼。

  • 組合模式的缺點:
    a. 使設計變得更加抽象,且增加新構件時可能會產生一些問題。
    b. 很難對容器中的構件類型進行限制。
  • 組合模式包含三個角色:
    a. 抽象構件為葉子構件和容器構件對象聲明接口。
    b. 葉子構件在組合結構中表示葉子節點對象,葉子節點沒有子節點。
    c. 容器構件在組合結構中表示容器節點對象,容器節點包含子節點,其子節點可以是葉子節點,也可以是容器節點,它提供一個集合用于存儲子節點,實現了在抽象構件中定義的行為。
  • 組合模式根據抽象構件類的定義形式,又可以分為透明組合模式和安全組合模式。
  • 更復雜的組合模式:組合模式中的葉子構件和容器構件都可以是抽象構建,此時可以增加多個具體葉子構件和多個具體容器構件。
  • 透明組合模式和安全組合模式:

  • 裝飾模式(對象結構型模式)

  • 裝飾模式用于動態地給一個對象增加一些額外的職責,使用裝飾模式來實現擴展比繼承更加靈活,它以對客戶透明的方式動態地給一個對象附加更多的責任。裝飾模式可以在不需要創造更多子類的情況下,將對象的功能加以擴展。
  • 裝飾模式的優點:

    a. 可以提供比繼承更多的靈活性。
    b. 可以通過一種動態的方式來擴展一個對象的功能,并通過使用不同的具體裝飾類以及這些裝飾類的排列組合,來實現不同的構件。
    c. 具體構件類與具體裝飾類可以獨立變化,用戶可以根據需要增加新的具體構件類和具體裝飾類。

  • 裝飾模式的缺點:
    a. 使用裝飾模式進行系統設計時將產生很多小對象。
    b. 裝飾模式比繼承更加易于出錯,排錯也很困難。
  • 裝飾模式包含四個角色:
    a. 抽象構件定義了對象的接口,可以給這些對象動態增加職責(方法)。
    b. 具體構件定義了具體的構件對象,實現了在抽象構件中聲明的方法,裝飾器可以給它增加額外的職責(方法)。
    c. 抽象裝飾類是抽象構件類的子類,用于給具體構件增加職責,但是具體職責在其子類中實現。
    d. 具體裝飾類是抽象裝飾類的子類,負責向構件添加新的職責。
  • 裝飾模式可分為透明裝飾模式和半透明裝飾模式。

  • 觀察者模式(對象行為型模式)

  • 觀察者模式定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個目標對象,當這個目標對象的狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新。
  • 觀察者模式的優點:

    a. 可以實現表示層和數據邏輯層的分離。
    b. 并在觀察目標和觀察者之間建立一個抽象的耦合。

  • 觀察者模式的缺點:
    a. 如果一個觀察目標對象有很多觀察者的話,將所有的觀察者都通知到會花費很多時間。
    b. 如果在觀察者和觀察目標之間有循環依賴的話可能導致系統崩潰。
  • 觀察者模式包含四個角色:
    a. 目標又稱為主題,它是指被觀察的對象。
    b. 具體目標是目標類的子類,通常它包含有經常發生改變的數據,當它的狀態發生改變時,向它的各個觀察者發出通知。
    c. 觀察者將對觀察目標的改變做出反應。
    d. 在具體觀察者中維護一個指向具體目標對象的引用,它存儲具體觀察者的有關狀態,這些狀態需要和具體目標的狀態保持一致。

  • 狀態模式(對象行為型模式)

  • 狀態模式描述了對象狀態的變化以及對象如何在每一種狀態下表現出不同的行為。
  • 狀態模式的優點:

    a. 封裝了轉換規則,并枚舉可能的狀態。
    b. 它將所有與某個狀態有關的行為放到一個類中,并且可以方便地增加新的狀態。
    c. 只需要改變對象狀態即可改變對象的行為。
    d. 還可以讓多個環境對象共享一個狀態對象,從而減少系統中對象的個數。

  • 狀態模式的缺點
    a. 狀態模式的結構與實現都較為復雜,如果使用不當將導致程序結構和代碼的混亂。
    b. 不滿足“開閉原則”。
  • 狀態模式包含三個角色:
    a. 環境類又稱為上下文類,它是擁有狀態的對象,在環境類中維護一個抽象狀態類State的實例,這個實例定義當前狀態,在具體實現時,它是一個State子類的對象,可以定義初始狀態。
    b. 抽象狀態類用于定義一個接口以封裝與環境類的一個特定狀態相關的行為。
    c. 具體狀態類是抽象狀態類的子類,每一個子類實現一個與環境類的一個狀態相關的行為,每一個具體狀態類對應環境的一個具體狀態,不同的具體狀態類其行為有所不同。

  • 策略模式(對象行為型模式)

  • 在策略模式中定義了一系列算法,將每一個算法封裝起來,并讓它們可以相互替換。
  • 策略模式讓算法獨立于使用它的客戶而變化。
  • 策略模式是對算法的封裝,它把算法的責任和算法本身分割開,委派給不同的對象管理。
  • 策略模式通常把一個系列的算法封裝到一系列的策略類里面,作為抽象策略類的子類。
  • 策略模式的優點:

    a. 對“開閉原則”的完美支持,在不修改原有系統的基礎上可以更換算法或者增加新的算法。
    b. 它很好地管理算法族,提高了代碼的復用性。
    c. 替換繼承,避免多重條件轉移語句的實現方式。

  • 策略模式的缺點:客戶端必須知道所有的策略類,并理解其區別。
  • 策略模式包含三個角色:
    a. 環境類在解決某個問題時可以采用多種策略,在環境類中維護一個對抽象策略類的引用實例。
    b. 抽象策略類為所支持的算法聲明了抽象方法,是所有策略類的父類。
    c. 具體策略類實現了在抽象策略類中定義的算法。
  • 總結

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

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