java設計模式-每天三個設計模式(前言)
我們知道JAVA是純面向物件的高階程式語言,使用面向物件的程式語言寫程式,特別是寫出好程式就必須掌握一些基本原則,就像資料庫設計中需要遵循三正規化(不知道的自行百度)一樣。那麼在編寫java程式時我們要遵循那些基本原則呢,聽我一一道來。
Java面向物件程式設計主要設計的基本原則有七種:
原則一:單一職責。單一職責關注的核心是我們設計的類(包含資料又稱屬性和行為又稱方法)的行為、功能應該是單一的,而不是一個類具備很多種功能,雖然它可以有多種功能,這個問題必須限定好場景,在我們使用的場景中必須要設計一個單一職責的類,單一職責並不是說類中只能有一個方法。舉個例子一個已婚的程式設計師,這個程式設計師在公司和家裡分別有兩個主要職責就是寫程式碼和照顧家人,如果我們寫了一個類有兩個方法分別是coding()和care(),還有一個身體指標的屬性,寫程式碼和care都可能引起程式設計師身體指標的變化,如果哪天程式設計師病倒了,那麼引起程式設計師病倒的原因就可能會有兩個,這就違背了單一職責的原則,也就是單一變化原因的原則。怎麼符合單一職責呢,就是把這兩個職責分拆到兩個類中。這樣導致程式設計師身體變化的原因就單一了,相對我們關注的場景。這樣就實現高內聚、鬆耦合。
原則二:介面分離。介面分離關注的核心是我們設計的類的行為數量儘量少,只對外提供必要的功能。還是上面那個程式設計師,如果僅僅是照顧家人的單一職責,假設家人認為做飯、洗衣就是就是好的照顧,那麼我們非要在類中再新增拖地等方法,顯然就不合適了,換句話就是隻提供必須的功能,這樣就提高了內聚性。
原則三:裡式替換。裡式替換關注的核心是我們設計的類與抽象父類或者介面的關係。在父類出現的地方,子類或者實現可以出現,但是反過來不行。這句話包含了幾個隱含意思,分別是子類全部實現了抽象父類或者介面的方法,子類重寫的方法的入參等於或者大於父類,方法的返回值型別等於或者小於父類,子類可以有自己的屬性。
原則四:依賴注入。依賴注入關注的核心是依賴抽象或者介面程式設計,鬆耦合性。這樣實現怎麼變不會影響外部呼叫者也變化。
原則五:迪米特。迪米特關注的核心是一個物件對其他物件儘量少了解。
原則六:開閉原則。開閉關注的核心對已有類的修改應該通過新增,而不是修改原來的程式碼,也就是對新增開放,對修改關閉。這樣可以避免修改一個問題帶來更多的問題。
原則七:優先使用組合而不是繼承。這個原則關注的核心就是解耦。讓其他類對自己的影響最小化。從強依賴變成若依賴。
從這七個設計原則,我們可以看出,我們設計程式一直的關注的主線就是高內聚性和低耦合性,這要可以提高我們程式碼維護性,擴充套件性,複用性以及便於測試。好了下一節正式開始我們java設計模式-每天三個設計模式這個主題。