參考:學習設計模式能夠提升我們代碼的可讀性和可維護性,規范了代碼總體的框架,因此我打算先拿一段時間來好好的總結一下設計模式,在此之前,先講講設計模式遵循的原則–往后會結合例子出一檔設計模式的總結內容
宣告:
(一)此篇大多都是文字例子,閱讀可能會有點小枯燥
(二)在后面總結設計模式的時候,我還會根據例子和代碼不斷加深對這些原則的理解,會再后面的文章中不斷提及這六大原則
(三)編程需要沉淀
那么現在就直接進入主題:
一.設計模式的六大原則
(一)單一職責原則 (即一個類只負責一項職責)
例:類定義的方法在不同之類呼叫之前會起沖突時,比如在動物類里定義一個吃草的方法,那么當該動物類牛羊類呼叫就不會有有問題,如果是狼類的話就會起沖突
解決:在該類中用多型寫法再定義適合不同動物的方法
總:聯系生活,做到細分功能
(二)里氏替換原則(即子類可以擴展父類的功能,但不要改變父類已有的功能)
例:父類定義好有了函式體的方法,就盡量不要去改動了(也就是覆寫),除了抽象方法需要重寫外
(三)依賴倒置原則(面向介面編程)
例:介面太好用了,不信你去查查, 在很多時候,不同的類間能使用相同的方法,要是你去繼承一個父類,那很多特有的方法不就得自己寫了嗎,但介面可以多實作,可以提高代碼的可維護性以及可讀性
(四)介面隔離原則(盡量把每個介面的做到細分)
例:如果不細分的話,那在實作該介面時很多不需要的方法也必須要重寫,那不僅增加了代碼量,還顯得有點刁鉆
(五)迪米特法則(降低耦合,區域變數中,不要引入新的類)
例:在定義一個方法的時候,里面最好不要引入新的類,因為外部人員看不到方法里面的情況,出了什么問題都有可能找不到
(六)開閉原則(對拓展開放,對修改關閉)
二.類之間的六大關系
1.依賴–只要類中用到了對方,如方法間,變數間,回傳值等,就說是依賴關系
2.泛化–繼承關系就是泛化關系,泛化關系是依賴的特例,至于為什么你自己想想就知道了
3.實作–實作介面,也是依賴關系的一種
4.關聯:即類與類間的關系,有單向一對一和雙向一對一
例如:人有手機卡,手機卡有人(使用者),所以類中可以互相包含–雙向一對一
5.聚合–整體跟部分可以分開,關聯關系的特例
例:手機卡跟人,手機卡可丟,人還能存在;但是當人沒了,那手機卡就不能有了的時候就是組合關系
6.組合–整體與部分缺一不可,可以說是聚合關系的升級版,所以也是關聯關系的特例
例:頭和人缺一不可,不信你自己假設一方沒了另一方還能存在嗎
總結:上面幾點只是術語以及概念性總結,至于怎么用,就要多聯系一下生活就行了
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/351002.html
標籤:其他
