物件導向的設計原則

2022-07-28 20:51:21 字數 2095 閱讀 8046

1.前言

物件導向三大特性:繼承,封裝,多型

物件導向是一種程式思想

而設計模式是一些**設計經驗形成的設計正規化

物件導向的設計原則是介於物件導向和設計模式中間,是物件導向優秀**的設計思想

2.物件導向設計七大原則

說到設計原則,不免說到七大原則

(1)單一原則:

作用:降低類的複雜性和提高可讀性

做法:每個類只負責一項職責,如果類中方法少,則在方法級別上保持單一原則也行

總之當類不單純時,利用介面,類和方法等來分解類

例子:dao層的乙個類操作乙個表

出行工具類->改成空中飛行類+水中類+陸地類

->改成類中飛行出行方法+水中方法+陸地方法

(2)介面隔離原則:

(比較簡單)

介面是動作集合(動詞),就是一類技能,設計介面要適合專案

類是實體(名詞),類實現介面說明類要有這些功能,實現介面要切合功能

(3)依賴倒置原則則:

作用:擴充套件性

做法:當具體類相似且很多時,用抽象類或者介面做抽象層,抽象層被依賴有利於擴充套件

例子:如人類要聚合衣服抽象類,衣服有夾克,t恤

人要聚合飲食介面,飲食的方式有吃水果,喝水

(4)裡式替換原則:

(比較簡單)

介面隔離原則不要實現不切合的介面

裡式替換原則不要繼承不切合的類,一部分切合的類可以讓他們繼承更基礎的類

如:b要呼叫a的方法去,繼承他,但又要重寫它,此時就要將ab關係重構為組合。

(5)開閉原則 ocp:

作用:易擴充套件

理論做法:(其他原則都是為了開閉原則)

對提供功能方擴充套件開放,對使用功能方修改關閉

擴充套件軟體新增功能,而不是修改**新增功能

具體做法:方法定義在介面或者抽象類

功能方新增子類,

main方法使用(使用者點選等觸發)

使用方多型呼叫 才不用修改 (呼叫功能模組**)

例子:畫圖功能介面定義畫圖方法,三角形等類實現

學習使用類聚合畫圖介面

新增圖形功能類時,學習使用類不修改

(6)迪公尺特法則:

作用:減少各類的關聯,解耦易擴充套件

做法:用依賴/ 組合/ 聚合的方式關聯物件,即成員變數 ,方法引數進入,方法返回值走出,別讓類物件區域性變數(方法內物件)

例子;(原來)

(改為)

(7)合成復用原則:

作用:復用性

做法:盡量使用依賴(使用),合成/組合(setter)、聚合的方式(new),避免使用繼承

七大原則其實就是:

類要單一,多個相似類可以抽象,

實現介面要合理,繼承要合理,少用繼承

使用類和被使用類之間用抽像層變數,且不做區域性變數

3.物件導向設計七大原則之外

但是我覺得只說七大原則難免把設計原則形容得邊邊框框,不太靈活,畢竟優秀的**應該是分析判斷,設計改進,隨著需求變化一步步改進而來的,而並非一好而終,也沒有最好之說。在具體的相求面前,我們要分析多種需求的在物件導向世界的本質並將提供較好的程式設計方式。

物件導向設計原則

oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...

物件導向設計原則

物件設計原則 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原則 意味著兩點 1 ...

物件導向設計原則

oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...