http://cj723.cnblogs.comhtml
1:簡單工廠模式 20210805算法
將「類實例化的操做」與「使用對象的操做」分開,讓使用者不用知道具體參數就能夠實例化出所須要的「產品」類,從而避免了在客戶端代碼中顯式指定,實現瞭解耦。編程
即便用者可直接消費產品而不須要知道其生產的細節設計模式
Input:你指定表明實例的變數,工廠就會返回相應的類的對象實例。單元測試
例子:支付方式 https://www.cnblogs.com/hzhhhbb/p/11406771.html測試
2:策略模式 20210806設計
--在策略模式(Strategy Pattern)中,一個類的行爲或其算法能夠在運行時更改。這種類型的設計模式屬於行爲型模式。htm
--在策略模式中,咱們建立表示各類策略的對象和一個行爲隨着策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行算法。對象
--策略模式是一種定義一系列算法的方法,從概念上來看,全部這些算法完成的都是相同的工做,只是實現不一樣,它能夠以相同的方式調用全部的算法,減小了各類算法類與使用算法類之間的耦合。blog
--策略模式的優勢是簡化了單元測試,由於每一個算法都有本身的類,能夠經過本身的接口單獨測試。
https://www.runoob.com/design-pattern/strategy-pattern.html
3:單一職責原則 20210810
就一個類而言,有且僅有一個引發它變化的緣由。若是一個類承載的職責的過多,就等於把這些職責耦合在一塊兒。一個職責的變化的時候,可能會抑制或者削弱其餘職責的能力,這種耦合會致使脆弱的設計。
當變化發生時候,設計會遭受到意想不到的變化。例子:俄羅斯方塊遊戲
4:開放-封閉原則 20210810
對擴展開放,對於更改是封閉的。即面對需求,程序是經過增長新代碼來實現的,而不是經過更改來實現的。
在咱們最初寫代碼的時候,咱們是假設不會變化的,當變化發生的時候,咱們就建立抽象來隔離之後發生的同類變化。
開放-封閉原則是整個面像對象設計的核心所在,遵循此原則會使咱們的代碼可維護,可複用,可擴展,靈活性好。
開發人員僅對程序中呈現頻繁變化的那些部分作出抽象。
5:依賴倒轉原則 20210810
A:高層模塊不該該依賴底層模塊,二者都應該依賴抽象。
B:抽象不該該依賴細節,細節應該依賴抽象。
針對接口編程,不要對實現編程。
里氏代換原則:子類型必須可以替換掉他們的父類型。(一個軟件實體若是使用的是他們父類,那麼必定適用於其子類,而且察覺不出父類對象和子類對象的區別。也就是說,在程序裏面,把父類替換成子類,程序的行爲沒有區別。)
依賴倒轉原則能夠說是面向對象編程的標誌。用哪一種語言來編寫程序不重要。
若是編寫時考慮的都是如何面向抽象編程,而不是面向細節編程,即程序中全部的依賴關係都是終止於抽象類或者接口類,這樣的設計就稱爲面向對象編程,不然就是過程式的編程。
6: 裝飾模式 20210812 人和穿衣服
有效的把類的核心職責與裝飾功能區分開了。爲已有功能動態的添加更多功能的一種方式。
裝飾模式提供了這樣一種方式,把非核心代碼,裝飾功能放在單獨的類中,並讓這個類包裝它須要裝飾的對象。當須要執行特殊行爲的時候,客戶代碼就能夠在運行時候按須要有選擇的,按順序地使用裝飾功能包裝對象。
就增長功能來講,裝飾模式比增長子類更加靈活。