今天公司大牛講解案例橋接模式,由橋接模式想到了設計模式的6大原則。我的設計模式的理解總結如下:設計模式
最近這剛開始看設計模式,固然是從最基本的6大原則看起,全部的設計模式也基本上都是圍繞着這六大設計原則實現的。設計
6大設計原則分別是:Single Responsible Principle 單一職責原則htm
Liskov Substitution Principle 里氏替換原則對象
Open Closed Principle 開閉原則繼承
Law of Demeter 迪米特法則接口
Interface Segregation Principle 接口隔離原則ip
Dependence Inversion Principle 依賴倒置原則ci
這6個原則的首字母(里氏替換原則和迪米特法則的首字母重複,只取一個)聯合起來就是SOLID(穩定的),其表明的含義也就是把這6個原則結合使用的好處:創建穩定,靈活,健壯的設計。開發
而開閉原則又是重中之重,是最基礎的原則,是其餘五大原則的精神領袖。要理解23中設計模式,先要理解這6大設計原則。如下原則的解釋也是我在百度上摳的,我的感受好好理解開閉原則,其餘的就好懂了。其實最重要的原則就是穩定,靈活,健壯。get
開閉原則:對擴展開放,對修改關閉。就是原有的方法或模塊儘可能不要修改,能夠新建方法或模塊。實現開閉原則的關鍵就在於「抽象」。把系統的全部可能的行爲抽象成一個抽象底層,這個抽象底層規定出全部的具體實現必須提供的方法的特徵。做爲系統設計的抽象層,要預見全部可能的擴展,從而使得在任何擴展狀況下,系統的抽象底層不需修改;同時,因爲能夠從抽象底層導出一個或多個新的具體實現,能夠改變系統的行爲,所以系統設計對擴展是開放的。理解了開閉原則對下面幾個原則的理解也會起到很大助力。
單一職責原則:單一職責原則就是指一個類或者模塊應該有且只有一個改變的緣由。單一職責原則的核心就是下降耦合和加強內聚,我的感受重在加強內聚。
里氏替換原則通俗的來說就是:子類能夠擴展父類的功能,但不能改變父類原有的功能。我的理解里氏替換原則主要是針對繼承的(目前我能想到的只有繼承~)。
迪米特法則:又叫做最少知識原則(Least Knowledge Principle 簡寫LKP),就是說一個對象應當對其餘對象有儘量少的瞭解,不和陌生人說話。此法則主要是爲了下降類之間的耦合,減小依賴。目前還不是很理解這個法則,須要結合實際慢慢體會。
接口隔離原則:客戶端不該該依賴它不須要的接口;一個類對另外一個類的依賴應該創建在最小的接口上。
依賴倒置原則:A.高層次的模塊不該該依賴於低層次的模塊,他們都應該依賴於抽象。B.抽象不該該依賴於具體實現,具體實現應該依賴於抽象。面向過程的開發,上層調用下層,上層依賴於下層,當下層劇烈變更時上層也要跟着變更,這就會致使模塊的複用性下降並且大大提升了開發的成本。面向對象的開發很好的解決了這個問題,通常狀況下抽象的變化機率很小,讓用戶程序依賴於抽象,實現的細節也依賴於抽象。即便實現細節不斷變更,只要抽象不變,客戶程序就不須要變化。這大大下降了客戶程序與實現細節的耦合度。