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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式之创建者模式

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

設計模式的基本原則

設計模式體現的是軟件設計的思想,而不是軟件技術,它重在使用多態與抽象類來解決各種問題

  • 開放封閉原則:類的改動是通過增加代碼進行的,而不是修改源代碼
  • 依賴倒置原則:依賴于抽象(接口),不要依賴具體的實現(類),也就是針對接口編程
  • 接口隔離原則:不應該強迫客戶的程序依賴他們不需要的接口方法。一個接口應該只提供一種對外功能
  • 里氏替換原則:任何抽象類出現的地方都可以用他的實現類進行替換。實際就是虛擬機制,語言級別實現面向對象功能。
  • 合成復用原則:如果使用繼承,會導致父類的任何變換都可能影響到子類的行為。如果使用對象組合,就降低了這種依賴關系
  • 迪米特法則:一個軟件實體應當盡可能少地與其他實體發生相互作用

設計模式的分類(創建者模型)

通常和對象的創建有關,涉及到對象實例化的方式。(共5種模式)

1、單例模式(Singleton Pattern)是保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
2、工廠方法模式(Factory Method Pattern)的用意是定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類中。
3、抽象工廠模式(Abstract Factory Pattern)的意圖是提供一個創建一系列相關或者相互依賴的接口,而無需指定它們具體的類。
4、建造者模式(Builder Pattern)的意圖是將一個復雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。
5、原型模式(Prototype Pattern)是用原型實例指定創建對象的種類,并且通過拷貝這些原型創建新的對象。

創建者模型

1、單例模式:

作用:保證為一個類只生成唯一的實例對象。也就是說,在整個程序空間中,該類只存在一個實例對象
構造圖如下:

為什么需要單例模式:
1、在多個線程之間,比如初始化一次socket資源
2、在整個程序空間使用全局變量,共享資源
3、大規模系統中,為了性能的考慮,需要節省對象的創建時間
實現步驟:
1、構造函數私有化
2、提供一個全局的靜態方法(全局訪問點)
3、在類中定義一個靜態指針,指向本類的變量的靜態變量指針
單例模式分類及實現

  • 懶漢式
  • 餓漢式

2.1、簡單工廠模式

靜態工廠方法模式。通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。

模式中包含的角色及其職責

1.工廠(Creator)角色
簡單工廠模式的核心,它負責實現創建所有實例的內部邏輯。工廠類可以被外界直接調用,創建所需的產品對象。
2.抽象(Product)角色
簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。
3.具體產品(Concrete Product)角色
簡單工廠模式所創建的具體實例對象

簡單工廠模式的優缺點
在這個模式中,工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的信息,決定究竟應該創建哪個具體類的對象。用戶在使用時可以直接根據工廠類去創建所需的實例,而無需了解這些對象是如何創建以及如何組織的。有利于整個軟件體系結構的優化。不難發現,簡單工廠模式的缺點也正體現在其工廠類上,由于工廠類集中了所有實例的創建邏輯,所以“高內聚”方面做的并不好。另外,當系統中的具體產品類不斷增多時,可能會出現要求工廠類也要做相應的修改,擴展性并不很好。

2.2、工廠模式

概念:

工廠方法模式同樣屬于類的創建型模式又被稱為多態工廠模式 。工廠方法模式的意義是定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類當中。
核心工廠類不再負責產品的創建,這樣核心類成為一個抽象工廠角色,僅負責具體工廠子類必須實現的接口,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。

模式中包含的角色及其職責:

抽象工廠(Creator)角色
工廠方法模式的核心,任何工廠類都必須實現這個接口。
具體工廠( Concrete Creator)角色
具體工廠類是抽象工廠的一個實現,負責實例化產品對象。
抽象(Product)角色
工廠方法模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。
具體產品(Concrete Product)角色
工廠方法模式所創建的具體實例對象

工廠模式和簡單工廠模式的比較:

工廠方法模式與簡單工廠模式在結構上的不同不是很明顯。工廠方法類的核心是一個抽象工廠類,而簡單工廠模式把核心放在一個具體類上。
工廠方法模式之所以有一個別名叫多態性工廠模式是因為具體工廠類都有共同的接口,或者有共同的抽象父類。
當系統擴展需要添加新的產品對象時,僅僅需要添加一個具體對象以及一個具體工廠對象,原有工廠對象不需要進行任何修改,也不需要修改客戶端,很好的符合了“開放-封閉”原則。而簡單工廠模式在添加新產品對象后不得不修改工廠方法,擴展性不好。工廠方法模式退化后可以演變成簡單工廠模式。

3、抽象工廠模式

概念:

抽象工廠模式是所有形態的工廠模式中最為抽象和最其一般性的。抽象工廠模式可以向客戶端提供一個接口,使得客戶端在不必指定產品的具體類型的情況下,能夠創建多個產品族的產品對象。

模式中包含的角色及其職責:

  • 抽象工廠(Creator)角色
    抽象工廠模式的核心,包含對多個產品結構的聲明,任何工廠類都必須實現這個接口。
  • 具體工廠( Concrete Creator)角色
    具體工廠類是抽象工廠的一個實現,負責實例化某個產品族中的產品對象。
  • 抽象(Product)角色
    抽象模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。
  • 具體產品(Concrete Product)角色
    抽象模式所創建的具體實例對象

三種工廠模式的區別:

簡單工廠 : 用來生產同一等級結構中的任意產品。(對于增加新的產品,無能為力)
工廠方法 :用來生產同一等級結構中的固定產品。(支持增加任意產品)
抽象工廠 :用來生產不同產品族的全部產品。(對于增加新的產品,無能為力;支持增加產品族)

4、建造者模式

概念:

Prototype模式是一種對象創建型模式,它采取復制原型對象的方法來創建對象的實例。使用Prototype模式創建的實例,具有與原型一樣的數據。
1)由原型對象自身創建目標對象。也就是說,對象創建這一動作發自原型對象本身。
2)目標對象是原型對象的一個克隆。也就是說,通過Prototype模式創建的對象,不僅僅與原型對象具有相同的結構,還與原型對象具有相同的值。
3)根據對象克隆深度層次的不同,有淺度克隆與深度克隆。

模式中包含的角色及其職責:

適用情況:
一個對象的構建比較復雜,將一個對象的構建和對象的表示進行分離。

建造者模式和工廠模式的區別:

Factory模式中:
1、有一個抽象的工廠。
2、實現一個具體的工廠—汽車工廠。
3、工廠生產汽車A,得到汽車產品A。
4、工廠生產汽車B,得到汽車產品B。
這樣做,實現了購買者和生產線的隔離。強調的是結果。
Builder模式:
1、引擎工廠生產引擎產品,得到汽車部件A。
2、輪胎工廠生產輪子產品,得到汽車部件B。
3、底盤工廠生產車身產品,得到汽車部件C。
4、將這些部件放到一起,形成剛好能夠組裝成一輛汽車的整體。
5、將這個整體送到汽車組裝工廠,得到一個汽車產品。
這樣做,目的是為了實現復雜對象生產線和其部件的解耦。強調的是過程
兩者的區別在于:
Factory模式不考慮對象的組裝過程,而直接生成一個我想要的對象。
Builder模式先一個個的創建對象的每一個部件,再統一組裝成一個對象。
Factory模式所解決的問題是,工廠生產產品。
而Builder模式所解決的問題是工廠控制產品生成器組裝各個部件的過程,然后從產品生成器中得到產品。

5、原型模式

概念:

Prototype模式是一種對象創建型模式,它采取復制原型對象的方法來創建對象的實例。使用Prototype模式創建的實例,具有與原型一樣的數據。
1)由原型對象自身創建目標對象。也就是說,對象創建這一動作發自原型對象本身。
2)目標對象是原型對象的一個克隆。也就是說,通過Prototype模式創建的對象,不僅僅與原型對象具有相同的結構,還與原型對象具有相同的值。
3)根據對象克隆深度層次的不同,有淺度克隆與深度克隆。

模式中包含的角色及其職責:

適用情況:
個復雜對象,具有自我復制功能,統一一套接口

總結

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

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