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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

Head First 设计模式

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

1,策略模式

定義了算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。

oo基礎:抽象,封裝,多態,繼承

oo原則:封裝變化,多用組合,少用繼承,針對接口編程,不針對實現編程

oo模式:策略模式。

2,觀察者模式(Observer)

定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,他的所有依賴者都會收到通知并自動更新。

優點:松耦合

00基礎:抽象

00原則:封裝變化,多用組合,少用繼承,針對接口編程,不針對實現編程,為交互對象之間的松耦合設計而努力,

00模式:觀察者模式

3,裝飾者模式

開放-關閉原則:類應該對擴展開放,對修改關閉。

裝飾著和被裝飾著對象有想通的超類型。

你可以用一個或者多個裝飾著包裝一個對象。

既然裝飾著和被裝飾對象有想通的超類型,所以在任何需要原始對象(被包裝的)的場合,可以用裝飾過的對象替代它。

裝飾著可以在所委托被裝飾著的行為之前與/或之后,加上自己的行為,以達到特定的目的。

對象可以在任何時候被裝飾,所以可以在運行時態的,不限量的用你喜歡的裝飾著來裝飾對象。

裝飾著模式:動態的將責任附加在對象上,若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。

繼承是有了正確的類型,而不是繼承它的行為,行為來自裝飾者和基礎組件,或與其他裝飾者之間的組合關系。

例子:java的I/O流就是采用裝飾者模式

00原則:封裝變化,多用組合,少用繼承,針對接口編程,不針對實現編程,為交互對象之間的松耦合設計而努力,對擴展開放,對修改關閉

4,工廠方法模式

定義了一個創建對象的接口,但由子類決定要實例化的類是哪一個,工廠方法讓類把實例化推遲到子類。

簡單工廠與工廠方法的區別:簡單工廠把全部的事情,在一個方法都處理完了,然而工廠方法卻是創建一個框架,讓子類決定要如何實現。

優點:將創建對象的代碼集中在一個對象或者方法中,可以避免代碼中的重復,并且更方便以后的維護,這也意味著客戶在實例化對象時,只會依賴于接口,而不是具體類,讓代碼更具有彈性。

依賴倒置原則:要依賴抽象,不要依賴具體類。

變量不可以持有具體類的引用。不要讓類派生自具體類。不要覆蓋基類中已實現的方法。

4.1,抽象工廠模式(不懂)

提供一個接口,用于創建相關或者依賴對象的家族,而不需要明確指定具體類。

工廠方法與抽象工廠區別:都是為了創建對象。工廠方法用的方法是繼承,抽象用的是對象組合。工廠方法創建對象需要擴展一個類,并覆蓋它的工廠方法。通過子類來創建對象。抽象工廠提供一個用來創建一個產品家族的抽象類型,這個類型的子類定義了產品被產生的方法,要想使用這個工廠必須先實例化它,然后將它傳入一些針對抽象類型所寫的代碼中。

5,單件模式

確保一個類只有一個實例,并提供一個全局訪問點。

多線程問題是那種解決方法:

(1)同步getInstance()方法

(2)使用急切創建實例

(3)雙重檢查加鎖?

?

6,命令模式

將“請求”封裝成對象,以便使用不同的請求,隊列或者日志來參數化其他對象,命令模式也支持可撤銷的操作。

命令模式的用途:隊列請求,日志請求,

7,適配器模式

將一個類的接口,轉換成客戶期望的另一個接口,適配器讓原本接口不可兼容的類可以合作無間。

適配器分為兩種:對象適配器(組合)和類適配器(繼承)

7.1外觀模式

提供了一個統一的接口,用來訪問子系統中的一群接口,外觀定義了一個高層接口,讓子系統更容易使用(讓接口更簡單)。

?

外觀模式并沒有封裝子系統,如有需要還是可以直接訪問子系統的接口。

外觀不只是簡化了接口,也將客戶從組件的子系統中解耦。

外觀和適配器可以包裝許多類,但是外觀的意圖是簡化接口,而適配器的意圖是將接口轉換成不同接口

最少知識原則:只和你的密友談話。

8,模板方法模式

在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。

用途:排序,數組的排序就采用了模板方法模式,InputStream類的一個read()方法也是模板方法模式

9,迭代器模式

提供一種方法順序訪問一個聚合對象的各個元素,而又不暴露其內部的表示。

9.1組合模式(沒懂)

允許你將對象組合成樹形結構來表現“整體/部分”層次結構,組合能讓客戶以一直的方式處理個別對象以及對象組合。

10,狀態模式

允許對象在內部狀態改變時改變它的行為,對象看起來好像修改了它的類。

?

11,代理模式

為另一個對象提供一個替身或者占位符以控制對這個對象的訪問。

使用代理模式創建代表對象,讓代表對象控制某對象的訪問,被代理的對象可以是遠程的對象,創建開銷大的對象或需要安全控制的對象。

11.1遠程代理

遠程代理可以作為另一個JVM上對象的本地代表,調用代理的方法,會被代理利用網絡轉發到遠程執行,并且結果會通過網絡返回給代理,再由代理將結果轉給客戶。(理解:就像駐場代表,傳達客戶與自己公司的意思。)

11.2 虛擬代理

虛擬代理作為創建開銷大的對象的代表,虛擬代理經常直到我們真正需要一個對象的時候才創建它,當對象在創建錢和創建中時,由虛擬代理來扮演對象的替身,對象創建后,代理就會將請求直接委托給對象。

11.3動態代理

動態代理之所以稱為動態,是因為運行時才將它的類創建出來,代碼開始執行時,還沒有proxy類,它是根據需要從你傳入的接口集創建的。

InvocationHandler不是代理類,只是幫助proxy的類。

代理類有一個靜態方法,叫做isProxyClass(),這個方法的返回值如果是true,就表示這是一個動態代理類。

11.4防火墻代理

控制網絡資源的訪問,保護主題免于“壞客戶”的侵害。

11.5只能引用代理

當主題被引用時,進行額外的動作,例如計算一個對象唄引用次數。

11.6緩存代理

為開銷大的運算結果提供暫時儲存,它也允許多個客戶共享結果,以減少計算或網絡延遲。

11.7同步代理

在多線程的情況下為主題提供安全的訪問。

11.8復雜隱藏代理

用來隱藏一個類的復雜幾個的復雜度,并進行訪問控制,

11.9寫入時復制代理

用來控制對象的復制,方法是延遲對象的復制,知道客戶真的需要為止。

12復合模式

復合模式結合兩個或以上的模式,組成一個解決方案,解決一再發生的一般性問題。

MVC是復合模式,結合了觀察者模式,策略模式和組合模式。

模型使用觀察者模式,以便觀察者更新,同事保持兩者之間的解耦。

控制器是視圖的策略,視圖可以使用不用的控制器實現,得到不同的行為。

視圖使用組合模式實現用戶界面,用戶界面通常組合了嵌套的組件,像面板,框架和按鈕。

適配器模式用來將新模型適配成已有的視圖和控制器。

13

模式是在某情景下,針對某問題的某種解決方案。

?

?

總結

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

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