http://cj723.cnblogs.com
1:簡單工廠模式 20210805
- 簡單工廠模式又叫靜態方法模式(因為工廠類定義了一個靜態方法)
- 簡單工廠模式是屬于創建型設計模式,關注于物件的創建,
- 現實生活中,工廠是負責生產產品的;同樣在設計模式中,簡單工廠模式我們可以理解為負責生產物件的一個類,稱為“工廠類”,
-
將“類實體化的操作”與“使用物件的操作”分開,讓使用者不用知道具體引數就可以實體化出所需要的“產品”類,從而避免了在客戶端代碼中顯式指定,實作了解耦,
即使用者可直接消費產品而不需要知道其生產的細節
Input:你指定代表實體的變數,工廠就會回傳相應的類的物件實體,
例子:支付方式 https://www.cnblogs.com/hzhhhbb/p/11406771.html
2:策略模式 20210806
--在策略模式(Strategy Pattern)中,一個類的行為或其演算法可以在運行時更改,這種型別的設計模式屬于行為型模式,
--在策略模式中,我們創建表示各種策略的物件和一個行為隨著策略物件改變而改變的 context 物件,策略物件改變 context 物件的執行演算法,
--策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些演算法完成的都是相同的作業,只是實作不同,它可以以相同的方式呼叫所有的演算法,減少了各種演算法類與使用演算法類之間的耦合,
--策略模式的優點是簡化了單元測驗,因為每個演算法都有自己的類,可以通過自己的介面單獨測驗,
https://www.runoob.com/design-pattern/strategy-pattern.html
3:單一職責原則 20210810
就一個類而言,有且僅有一個引起它變化的原因,如果一個類承載的職責的過多,就等于把這些職責耦合在一起,一個職責的變化的時候,可能會抑制或者削弱其他職責的能力,這種耦合會導致脆弱的設計,
當變化發生時候,設計會遭受到意想不到的變化,例子:俄羅斯方塊游戲
4:開放-封閉原則 20210810
對擴展開放,對于更改是封閉的,即面對需求,程式是通過增加新代碼來實作的,而不是通過更改來實作的,
在我們最初寫代碼的時候,我們是假設不會變化的,當變化發生的時候,我們就創建抽象來隔離以后發生的同類變化,
開放-封閉原則是整個面像物件設計的核心所在,遵循此原則會使我們的代碼可維護,可復用,可擴展,靈活性好,
開發人員僅對程式中呈現頻繁變化的那些部分做出抽象,
5:依賴倒轉原則 20210810
A:高層模塊不應該依賴底層模塊,兩者都應該依賴抽象,
B:抽象不應該依賴細節,細節應該依賴抽象,
針對介面編程,不要對實作編程,
里氏代換原則:子型別必須能夠替換掉他們的父型別,(一個軟體物體如果使用的是他們父類,那么一定適用于其子類,并且察覺不出父類物件和子類物件的區別,也就是說,在程式里面,把父類替換成子類,程式的行為沒有區別,)
依賴倒轉原則可以說是面向物件編程的標志,用哪種語言來撰寫程式不重要,
如果撰寫時考慮的都是如何面向抽象編程,而不是面向細節編程,即程式中所有的依賴關系都是終止于抽象類或者介面類,這樣的設計就稱為面向物件編程,否則就是程序式的編程,
6: 裝飾模式 20210812 人和穿衣服
有效的把類的核心職責與裝飾功能區分開了,為已有功能動態的添加更多功能的一種方式,
裝飾模式提供了這樣一種方式,把非核心代碼,裝飾功能放在單獨的類中,并讓這個類包裝它需要裝飾的物件,當需要執行特殊行為的時候,客戶代碼就可以在運行時候按需要有選擇的,按順序地使用裝飾功能包裝物件,
就增加功能來說,裝飾模式比增加子類更加靈活,
7:代理模式 20210816 追求模式
為其他物件提供一種代理以控制對這個物件的訪問,
代理模式其實就是在訪問物件時引入一定程度的間接性,因為這種間接性,可以附加多種用途,代理就是真實物件的代表,
第一:遠程代理,也就是為一個物件在不同的地址空間提供區域代表,這樣可以隱藏一個物件存在于不同地址空間的事實,
第二:虛擬代理,是根據需要創建開銷很大的物件,通過它來存放實體化需要很長時間的真實物件,
第三:安全代理,用來控制真實物件訪問時的權限,一般用于物件應該有不同的訪問權限的時候,
第四:智能代理,是指當呼叫真實的物件時,代理處理另外一些事,如計算真實物件的參考次數,這樣當該物件沒有參考時候,可以自動釋放它,或當第一次參考一個持久化物件時候,將它裝入記憶體,
8: 工廠方法模式 20210817 學雷鋒
工廠方法模式就是定義一個用于創建物件的介面,讓子類決定實體化哪一個類,工廠方法使一個類的實體化延遲到子類,
工廠方法模式實作時,客戶端需要決定實體化哪一個工廠來實作運算類,選擇判斷的問題還是存在的,也就是說,工廠方法把簡單工廠的內部邏輯判斷轉移到了客戶端,你想要加功能,本來是改工廠類的,現在是修改客戶端代碼,
9: 原型模式 20210819 寫簡歷
原型模式:用原型實體指定創建物件的種類,并且通過拷貝這些原型創建新的物件,
其實就是從一個物件再創建另外一個可定制的物件,而且不需要知道任何創建的細節,
.NET在System命名空間中提供了ICloneable介面,其中就有唯一的一個方法Clone(),只需要實作這個介面就可以完成原型模式了!
淺復制:復制當前物件的淺表副本,方法是創建一個新物件,然后將該物件的非靜態欄位復制到該物件,如果物件是值型別的,則對該欄位執行逐位復制,如果欄位是參考型別的,則復制參考但不復制參考的物件,因此,原始物件及其副本參考同一物件,
:淺復制的例子 (MemberwiseClone())
深復制:把參考物件的變數指向復制過的新物件,而不是原有的被參考的物件,
例子:資料集物件Dataset,Clone():淺復制,Copy():深復制,
10:模板方法模式 20210823 試卷例子
當我們要完成在某一細節層次一致的一個程序或一系列步驟,但其個別步驟在更詳細的層次上的實作有可能不同的時候,通常考慮用該模式來處理,
定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特殊步驟,
特點:通過把不變行為搬移到超類,去除子類中的重復代碼來體現優勢,
11 : 迪米特法則 20210824 無熟人難辦事
最小知識法則,如果兩個類不需要直接通信,那么這兩個類就不必要發生直接的作用,如果一個類需要呼叫另一個類的方法的話,可以通過第三者轉發這個呼叫,在類的結構設計上,每一個類都應該盡量降低成員的訪問權限,
強調了類之前的松藕合,類之間的藕合越松,越有利于復用,一個處在弱耦合的類被修改,不會對有關系的類造成波及,
12 :外觀模式 20210824 牛市股票還會虧錢?
為子系統中的一組介面提供一個一致的界面,此模式定義了一個高度的介面,這個介面使得子系統更加容易使用,
何時使用外觀模式:① 資料訪問,業務邏輯,表示層的層與層之間建立外觀Facade,這樣可以為復雜的子系統提供一個簡單的介面,使得耦合大大降低,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/308456.html
標籤:設計模式
上一篇:抽象工廠模式(學習筆記)
下一篇:[C++] Class工廠
