1.前言
面向物件三大特性:繼承,封裝,多型
面向物件是一種程式思想
而設計模式是一些代碼設計經驗形成的設計范式
面向物件的設計原則是介于面向物件和設計模式中間,是面向物件優秀代碼的設計思想
2.面向物件設計七大原則
說到設計原則,不免說到七大原則
(1)單一原則:
作用:降低類的復雜性和提高可讀性
做法:每個類只負責一項職責,如果類中方法少,則在方法級別上保持單一原則也行
總之當類不單純時,利用介面,類和方法等來分解類
例子:dao層的一個類操作一個表
出行工具類->改成空中飛行類+水中類+陸地類
->改成類中飛行出行方法+水中方法+陸地方法
(2)介面隔離原則:
(比較簡單)
介面是動作集合(動詞),就是一類技能,設計介面要適合專案
類是物體(名詞),類實作介面說明類要有這些功能,實作介面要切合功能
(3)依賴倒置原則則:
作用:擴展性
做法:當具體類相似且很多時,用抽象類或者介面做抽象層,抽象層被依賴有利于擴展
例子:如人類要聚合衣服抽象類,衣服有夾克,T恤
人要聚合飲食介面,飲食的方式有吃水果,喝水
(4)里式替換原則:
(比較簡單)
介面隔離原則不要實作不切合的介面
里式替換原則不要繼承不切合的類,一部分切合的類可以讓他們繼承更基礎的類
如:b要呼叫a的方法去,繼承他,但又要重寫它,此時就要將ab關系重構為組合,

(5)開閉原則 ocp:
作用:易擴展
理論做法:(其他原則都是為了開閉原則)
對提供功能方擴展開放,對使用功能方修改關閉
擴展軟體新增功能,而不是修改代碼新增功能
具體做法:方法定義在介面或者抽象類
功能方新增子類,
main方法使用(用戶點擊等觸發)
使用方多型呼叫 才不用修改 (呼叫功能模塊代碼)
例子:畫圖功能介面定義畫圖方法,三角形等類實作
學習使用類聚合畫圖介面
新增圖形功能類時,學習使用類不修改
(6)迪米特法則:
作用:減少各類的關聯,解耦易擴展
做法:用依賴/ 組合/ 聚合的方式關聯物件,即成員變數 ,方法引數進入,方法回傳值走出,別讓類物件區域變數(方法內物件)
例子;
(原來)

(改為)

(7)合成復用原則:
作用:復用性
做法:盡量使用依賴(使用),合成/組合(setter)、聚合的方式(new),避免使用繼承
七大原則其實就是:
類要單一,多個相似類可以抽象,
實作介面要合理,繼承要合理,少用繼承
使用類和被使用類之間用抽像層變數,且不做區域變數
3.面向物件設計七大原則之外
但是我覺得只說七大原則難免把設計原則形容得邊邊框框,不太靈活,畢竟優秀的代碼應該是分析判斷,設計改進,隨著需求變化一步步改進而來的,而并非一好而終,也沒有最好之說,在具體的相求面前,我們要分析多種需求的在面向物件世界的本質并將提供較好的程式設計方式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/46457.html
標籤:設計模式
上一篇:同步、異步、阻塞、非阻塞
下一篇:策略模式
