国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

面向對象設計原則

2019-11-08 03:09:19
字體:
來源:轉載
供稿:網友

一、開閉原則:

這一條放在第一位來理解,它的含義是對擴展開放,對修改關閉。解釋一下就是,我們寫完的代碼,不能因為需求變化就修改。我們可以通過新增代碼的方式來解決變化的需求。

當然,這是一種理想的狀態,在現實中,我們要盡量的縮小這種修改。

再解釋一下這條原則的意義所在,我們采用逆向思維方式來想。如果每次需求變動都去修改原有的代碼,那原有的代碼就存在被修改錯誤的風險,當然這其中存在有意和無意的修改,都會導致原有正常運行的功能失效的風險,這樣很有可能會展開可怕的蝴蝶效應,使維護工作劇增。

說到底,開閉原則除了表面上的可擴展性強以外,在企業中更看重的是維護成本。

所以,開閉原則是設計模式的第一大原則,它的潛臺詞是:控制需求變動風險,縮小維護成本。

以下幾種原則,都是為此原則服務的。

二、里氏替換選擇:

此原則的含義是子類可以在任何地方替換它的父類。解釋一下,這是多態的前提,我們后面很多所謂的靈活,都是不改變聲明類型的情況下,改變實例化類來完成的需求變更。當然,繼承的特性看似天然就滿足這個條件。但這里更注重的是繼承的應用問題,我們必須保證我們的子類和父類劃分是精準的。

里氏替換原則的潛臺詞是:盡量使用精準的抽象類或者接口。

三、單一職責原則:

單一職責的含義是:類的職責單一,引起類變化的原因單一。解釋一下,這也是靈活的前提,如果我們把類拆分成最小的職能單位,那組合與復用就簡單的多了,如果一個類做的事情太多,在組合的時候,必然會產生不必要的方法出現,這實際上是一種污染。

 

舉個例子,我們在繪制圖案的時候,用“點”組成圖和用“直線”組成圖,哪個更靈活呢?一定是“點”,它可以繪制任何圖形,而直線只能繪制帶有直線條的圖案,它起碼無法畫圓。

 

單一職責的潛臺詞是:拆分到最小單位,解決復用和組合問題。

 

四、接口隔離原則:

 

接口隔離原則可以說是單一職責的必要手段,它的含義是盡量使用職能單一的接口,而不使用職能復雜、全面的接口。很好理解,接口是為了讓子類實現的,如果子類想達到職能單一,那么接口也必須滿足職能單一。

 

相反,如果接口融合了多個不相關的方法,那它的子類就被迫要實現所有方法,盡管有些方法是根本用不到的。這就是接口污染。

 

接口隔離原則的潛臺詞是:拆分,從接口開始。

 

五、依賴倒置原則:

 

想要理解依賴倒置原則,必須先理解傳統的解決方案。面相對象的初期的程序,被調用者依賴于調用者。也就是調用者決定被調用者有什么方法,有什么樣的實現方式,這種結構在需求變更的時候,會付出很大的代價,甚至推翻重寫。

 

依賴倒置原則就是要求調用者和被調用者都依賴抽象,這樣兩者沒有直接的關聯和接觸,在變動的時候,一方的變動不會影響另一方的變動。

 

其實,依賴倒置和前面的原則是相輔相成的,都強調了抽象的重要性。

 

依賴倒置的潛臺詞是:面向抽象編程,解耦調用和被調用者。

 

六、迪米特原則:

 

迪米特原則要求盡量的封裝,盡量的獨立,盡量的使用低級別的訪問修飾符。這是封裝特性的典型體現。

 

一個類如果暴露太多私用的方法和字段,會讓調用者很茫然。并且會給類造成不必要的判斷代碼。所以,我們使用盡量低的訪問修飾符,讓外界不知道我們的內部。這也是面向對象的基本思路。這是迪米特原則的一個特性,無法了解類更多的私有信息。

 

另外,迪米特原則要求類之間的直接聯系盡量的少,兩個類的訪問,通過第三個中介類來實現。

 

迪米特原則的潛臺詞是:不和陌生人說話,有事去中介。

 

七、組合/聚合復用原則:

 

此原則的含義是,如果只是達到代碼復用的目的,盡量使用組合與聚合,而不是繼承。這里需要解釋一下,組合聚合只是引用其他的類的方法,而不會受引用的類的繼承而改變血統。

 

繼承的耦合性更大,比如一個父類后來添加實現一個接口或者去掉一個接口,那子類可能會遭到毀滅性的編譯錯誤,但如果只是組合聚合,只是引用類的方法,就不會有這種巨大的風險,同時也實現了復用。

 

組合聚合復用原則的潛臺詞是:我只是用你的方法,我們不一定是同類。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鸡东县| 周至县| 伊金霍洛旗| 改则县| 六盘水市| 西安市| 手机| 承德市| 辽源市| 鞍山市| 揭阳市| 铜陵市| 青州市| 通化县| 昌宁县| 田林县| 丰县| 天水市| 新龙县| 乌拉特后旗| 罗甸县| 繁峙县| 保山市| 晋宁县| 水富县| 美姑县| 乃东县| 鄯善县| 高平市| 汉中市| 兴山县| 于都县| 读书| 浪卡子县| 丹巴县| 绥江县| 五家渠市| 资源县| 东方市| 阿合奇县| 盘山县|