Java的設計模式和6大原則

Java正道的光發表於2020-10-07

什麼是設計模式?

設計模式(Design pattern) 是解決軟體開發某些特定問題而提出的一些解決方案也可以理解成解決問題的一些思路。通過設計模式可以幫助我們增強程式碼的可重用性、可擴充性、 可維護性、靈活性好。我們使用設計模式最終的目的是實現程式碼的 高內聚 和 低耦合。
什麼是高內聚和低耦合?
舉例一個現實生活中的例子,例如一個公司,一般都是各個部門各司其職,互不干涉。各個部門需要溝通時通過專門的負責人進行對接。在軟體裡面也是一樣的 一個功能模組只是關注一個功能,一個模組最好只實現一個功能。這個是所謂的內聚,模組與模組之間、系統與系統之間的互動,是不可避免的, 但是我們要儘量減少由於互動引起的單個模組無法獨立使用或者無法移植的情況發生, 儘可能多的單獨提供介面用於對外操作, 這個就是所謂的低耦合

設計模式的分類

建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。

設計模式的6大原則?

開閉原則(Open Close Principle)

開閉原則就是說對擴充套件開放,對修改關閉。
對軟體實體的改動,最好用擴充套件而非修改的方式。如果要修改程式碼,儘量用繼承或組合的方式來擴充套件類的功能,而不是直接修改類的程式碼。

里氏代換原則(Liskov Substitution Principle)

儘量把父類設計為抽象類或者介面,讓子類繼承父類或實現父介面,子類可以擴充套件父類的功能,但不能改變父類原有的功能。

  1. 老爸能幹的事情,兒子都能幹。
  2. 但是兒子能幹的事情老爸不一定能幹。

里氏代換原則是開閉原則的具體實現手段之一。

依賴倒轉原則(Dependence Inversion Principle)

要依賴抽象,不要依賴具體類。這個和針對介面程式設計, 而不是面向實現程式設計很像。但是它更強調抽象。這個原則是不能讓高層元件依賴底層元件,而且高層元件和低層元件都應該依賴抽象。摘抄自 【Head First 設計模式】

面向介面程式設計 而不是面向實現程式設計,
這裡的介面不一定就是我們程式中的介面也可以是抽象類。

Animal dog1 = new Dog();//面向介面
Dog dog2 = new Dog();//面向實現

迪米特法則(最少知道原則)(Demeter Principle)

一個實體應當儘量少的與其他實體之間發生相互作用,使得系統功能模組相對獨立。

單一職責原則(Single Responsibility Principle)

一個類只承擔一個職責,千萬不要讓一個類乾的事情太多。

介面隔離原則(Interface Segregation Principle)

介面最小化。介面中的方法應該儘量少。和單一職責原則類似

* 單一職責針對的是類,
* 介面隔離針對的是介面

 

相關文章