經典模式簡介

2021-09-13 14:28:10 字數 1247 閱讀 6795

為什麼要學習模式?

設計模式減少了物件之間的依賴性,降低耦合程度,讓系統更易於擴充套件,提高了物件的可復用性,

設計模式的優勢:

1、復用解決方案,復用公認的設計,能學習其他的經驗,避免重蹈覆轍。

2、確立通用術語,在分析和設計階段提供了共同的基準點 ,用於交流和協作的共同詞彙和對問題共識

3、提供更高層次的視角

4、使用更優秀的設計

5、提高可維護性

6、發現巨型繼承層次結構的替代方案。

設計模式的基本原則:

1、開閉原則

2、從背景設計原則,在設計各部分呈現細節之前,先建立總體的概念,再逐步複雜化,不必過早關注細節

3、依賴倒置原則,

4、替換原則

5、封裝變化原則,乙個類不要封裝兩個變化的事物,除非它們明確耦合一起,不然會降低內聚性,變化之間的耦合也無法鬆散。

提供乙個建立一系列相關或者相依賴的物件介面,不須指定它們的具體型別。

定義乙個服務的抽象介面,把實現延遲到子類中,讓子類可以在不修改服務的抽象介面的情況下就可以重新定義它特定的具體實現。

表示乙個作用於某個物件結構中的各個元素的操作,讓你可以在不修改各元素的類的前提下,定義作用於這些元素的新操作(方法)

在需求發生改變時,某些類層次結構中經常需要增加新的操作(方法),若在基類中更改,則會給子類帶來繁重的變更負擔(或者破壞原有的設計)

visitor:為objectstructure中的每乙個類生命乙個visit操作,該操作的特徵和名字標識了傳送visit請求給element類,讓visitor可以確定正在被訪問的element集體型別,因此visitor可以通過該element的特定介面直接訪問它

concretevisitor:實現每乙個由visitor宣告的操作。

element:定義乙個accept操作,以乙個visitor作為引數

concreteelement:實現accept操作,該操作以乙個visitor作為引數

objectstructure:能列舉它的元素;提供乙個高層介面允許visitor訪問它的元素;也可以是乙個集合

經典HMM簡介(一)

如果乙個過程的 將來 僅依賴 現在 而不依賴 過去 即x t 1 f x t 則此過程具有馬爾可夫性,或稱此過程為馬爾可夫過程。時間和狀態都離散的馬爾科夫過程稱為馬爾科夫鏈,記作 其中n表示狀態的種類數量。記狀態空間 i 條件概率 pi j m m n p pi j即狀態轉移概率矩陣的第 行第 列,...

LVS NAT模式簡介

lvs 簡稱 linux virtual server,在實際環境中經常作為b s結構的網路應用中的負載均衡器來使用,工作在7層網路模型中的,網路層,也就是通常說的ip層,由於資料的處理是在linux核心態完成的,所以效能很高,比起 apache,nginx,haproxy來說,效能不在乙個級別。這...

設計模式簡介

設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。設計模式是軟體工程 的基石脈絡,如同大廈 的結構一樣。模式名稱 pattern name 問題 problem 解決方案 solution 效果 consequences 設計模式分為三種型別,共...