无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

Python:SOLID 面向?qū)ο笤O計原則

0
分享至

在軟件工程與面向?qū)ο笤O計(OOD)領域,SOLID 原則被廣泛視為構(gòu)建可維護、可復用、可擴展、易測試的軟件系統(tǒng)的核心指導規(guī)范。無論是大型工程架構(gòu),還是日常 Python 項目,只要涉及類與對象,SOLID 原則都能幫助你減少耦合、提高代碼質(zhì)量。

本系列將以 Python 為主要語言,從實用角度講解 SOLID 五大原則的設計動機、適用場景、常見誤用以及標準示例。

一、什么是 SOLID?

SOLID是五個英文字母的首字母縮寫,代表五項經(jīng)典的面向?qū)ο笤O計原則,由 Robert C. Martin(Uncle Bob)提出。

字母

英文全稱

中文譯名

S

Single Responsibility Principle

單一職責原則

O

Open–Closed Principle

開閉原則

L

Liskov Substitution Principle

里氏替換原則

Interface Segregation Principle

接口隔離原則

D

Dependency Inversion Principle

依賴倒置原則

盡管 Python 是動態(tài)語言,不依賴接口聲明,也不限制繼承方式,但這些原則依然是判斷一個對象體系設計是否健壯的重要標準。

為什么在 Python 中仍然需要 SOLID?

Python 靈活、動態(tài)、語義自由,但這也意味著:

? 更容易產(chǎn)生隱性耦合

? 更容易無意重寫行為、破壞預期

? 更容易在運行時暴露錯誤(而非編譯期)

? 缺少強類型約束,因此設計思想比語法更重要

SOLID 提供一組可實踐的“設計約束”,幫助 Python 程序在動態(tài)特性下仍然保持結(jié)構(gòu)清晰。

二、SOLID 五大原則

下面對五項原則做簡要總結(jié),便于建立整體認知。

一個類應該只有一個引起其變化的原因

SRP 是整個 OOP 的基礎:

? 避免“萬能類”(God Object)

? 提高可測試性

? 避免更改一個功能影響另一個功能

在 Python 項目中尤其常見于:日志混入業(yè)務邏輯、數(shù)據(jù)庫操作混入模型類、視圖層混入數(shù)據(jù)驗證等。

軟件實體應當對擴展開放,對修改關閉。

意味著,新功能應通過新增類和方法來實現(xiàn),而不是頻繁修改已有穩(wěn)定代碼

Python 中 OCP 常通過:

? 抽象基類(ABC)

? Duck Typing

? 策略模式、適配器模式

? 插件化架構(gòu)

來實現(xiàn)。

只要父類可以使用的地方,子類也必須能夠安全地替代父類,而不會破壞程序功能。

LSP 是保證繼承體系正確性的根基:

? 子類不能弱化父類的行為契約

? 子類不能改變父類方法的語義

? 子類不能突然返回新的類型或拋出額外異常

違反 LSP 會讓繼承成為“反模式”,導致不可維護的 bug。

客戶端不應依賴它不需要的方法。

適用于 Python 時,主要體現(xiàn)在:

? 避免把大量不相關的方法塞入一個類

? 使用多個小型接口(抽象基類)而不是臃腫的大接口

? 通過協(xié)議(Protocol)或抽象類拆分能力

Python 雖然沒有傳統(tǒng)接口,但使用 ABC、mixins、協(xié)議等方式完全能表達 ISP。

高層模塊不應依賴低層模塊;二者都應依賴抽象。

簡單說:

? 代碼應依賴抽象接口,而非具體實現(xiàn)

? 用“可替換組件”構(gòu)建系統(tǒng)

? 提高可測試性與靈活性

Python 中 DIP 很常見于:

? 將具體實現(xiàn)注入(依賴注入 DI)

? 使用抽象基類隔離邏輯

? 在模塊之間抽離協(xié)議(Protocol)

三、SOLID 之間的關系與整體作用

SOLID 不是五條孤立的規(guī)則,而是一套整體性的設計體系:

?SRP決定“一個類應該做什么”

?OCP決定“如何擴展系統(tǒng)而不破壞舊代碼”

?LSP決定“繼承結(jié)構(gòu)是否穩(wěn)固可靠”

?ISP決定“類暴露出的接口是否合理簡潔”

?DIP決定“系統(tǒng)組件是否松耦合、可替換”

最終目標是:

構(gòu)建靈活、高內(nèi)聚、低耦合、可擴展的對象系統(tǒng)。

四、一個簡單的綜合示例

以下示例構(gòu)建了一個簡單日志系統(tǒng),體現(xiàn) SOLID 各原則的作用:

Processor(FileLogger()).run()

這個例子展示:

? 想擴展新的日志方式,只需新增類(OCP

? Processor 依賴 Logger 抽象而非實現(xiàn)(DIP

? 每個類職責單一(SRP

? 所有 Logger 子類行為一致、可替換(LSP

? Logger 專注單一功能、接口簡單(ISP

一個小例子即展示了 SOLID 五大原則協(xié)同工作的效果。

小結(jié)

SOLID 是面向?qū)ο笤O計中最核心、最廣泛應用的五大原則,它們共同構(gòu)成評估一個系統(tǒng)是否具備良好設計的重要標準。在 Python 中,雖然語言動態(tài)且靈活,但依然需要遵守 SOLID 以減少耦合、提升可維護性和擴展性。


點贊有美意,贊賞是鼓勵

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
財務造假!10家A股公司退市,超25萬股東踩雷

財務造假!10家A股公司退市,超25萬股東踩雷

21世紀經(jīng)濟報道
2026-06-12 18:59:56
普京再次回應戰(zhàn)爭起源:不是俄開戰(zhàn),是基輔先向頓巴斯開火

普京再次回應戰(zhàn)爭起源:不是俄開戰(zhàn),是基輔先向頓巴斯開火

桂系007
2026-06-12 23:57:08
美加墨世界杯第二場比賽就現(xiàn)空座,票價爭議浮出水面

美加墨世界杯第二場比賽就現(xiàn)空座,票價爭議浮出水面

澎湃新聞
2026-06-12 17:40:29
剛剛,人類歷史上首位萬億美元富豪誕生!

剛剛,人類歷史上首位萬億美元富豪誕生!

每日經(jīng)濟新聞
2026-06-12 22:32:06
英媒一語驚人:中美貿(mào)易戰(zhàn)中,美國唯獨算錯的是中國的底牌!

英媒一語驚人:中美貿(mào)易戰(zhàn)中,美國唯獨算錯的是中國的底牌!

流史歲月
2026-06-12 18:30:08
現(xiàn)在的年輕人不敢開房了

現(xiàn)在的年輕人不敢開房了

微微熱評
2026-06-13 00:53:53
看完世界杯第2場,球迷看清了3個不爭事實,韓國最擅長踢歐洲球隊

看完世界杯第2場,球迷看清了3個不爭事實,韓國最擅長踢歐洲球隊

侃球熊弟
2026-06-12 11:56:01
CCTV5直播!世界杯“重頭戲”,超21億歐元對決,姆巴佩PK哈蘭德

CCTV5直播!世界杯“重頭戲”,超21億歐元對決,姆巴佩PK哈蘭德

麥子的籃球故事
2026-06-12 17:40:17
阿里高層這次真的生氣了

阿里高層這次真的生氣了

一見財經(jīng)
2026-06-12 11:11:21
國安部披露:在我國某海域發(fā)現(xiàn)有較大型活體海洋動物被掛上傳感器,竊取海洋敏感數(shù)據(jù)

國安部披露:在我國某海域發(fā)現(xiàn)有較大型活體海洋動物被掛上傳感器,竊取海洋敏感數(shù)據(jù)

每日經(jīng)濟新聞
2026-06-12 13:16:05
中國斷供稀土5個多月,日本工廠無一停產(chǎn),是真擺脫了還是在硬撐

中國斷供稀土5個多月,日本工廠無一停產(chǎn),是真擺脫了還是在硬撐

次元君情感
2026-06-01 14:27:53
63歲阿湯哥被曝“越老越瘋”,同行都看不下去了

63歲阿湯哥被曝“越老越瘋”,同行都看不下去了

生活觀察員啊
2026-06-11 01:22:03
打臉CBA,懷特塞德高調(diào)加入其他聯(lián)賽沒有傷病,上海隊陷入爭議

打臉CBA,懷特塞德高調(diào)加入其他聯(lián)賽沒有傷病,上海隊陷入爭議

宗介說體育
2026-06-12 16:35:22
美軍開始空襲伊朗

美軍開始空襲伊朗

財聯(lián)社
2026-06-11 05:42:11
劉宇寧發(fā)文回應戀情:清醒坦蕩的態(tài)度,才是明星該有的模樣

劉宇寧發(fā)文回應戀情:清醒坦蕩的態(tài)度,才是明星該有的模樣

陳意小可愛
2026-06-13 00:50:31
“張雪機車”獲得WSBK艾米利亞-羅馬涅站桿位賽第三名

“張雪機車”獲得WSBK艾米利亞-羅馬涅站桿位賽第三名

極目新聞
2026-06-12 23:00:07
中央開始嚴查,多地機關事業(yè)單位大整頓啟動,這幾類人受影響最大

中央開始嚴查,多地機關事業(yè)單位大整頓啟動,這幾類人受影響最大

職場資深秘書
2026-06-12 14:47:02
老人入住精神病院7年后查出梅毒;哈爾濱精神專科白漁泡醫(yī)院稱系舊疾,家屬出示入院前梅毒陰性檢測報告反駁

老人入住精神病院7年后查出梅毒;哈爾濱精神專科白漁泡醫(yī)院稱系舊疾,家屬出示入院前梅毒陰性檢測報告反駁

大風新聞
2026-06-12 12:12:20
內(nèi)塔尼亞胡:特朗普不打伊朗了,沒提前告訴我

內(nèi)塔尼亞胡:特朗普不打伊朗了,沒提前告訴我

政知新媒體
2026-06-12 19:06:11
謝娜再次翻車,這一次,她踢到鐵板了

謝娜再次翻車,這一次,她踢到鐵板了

桌子的生活觀
2026-06-12 11:58:27
2026-06-13 02:35:00
MediaTea
MediaTea
專業(yè)的數(shù)字媒體、新媒體技術(shù)
1888文章數(shù) 80關注度
往期回顧 全部

科技要聞

剛剛,人類歷史上首位萬億美元富豪誕生!

頭條要聞

美加墨世界杯第二場比賽就現(xiàn)空座 英媒:尷尬

頭條要聞

美加墨世界杯第二場比賽就現(xiàn)空座 英媒:尷尬

體育要聞

歐洲恐韓?肉德維德?

娛樂要聞

一天4個瓜,肖戰(zhàn)熱巴最意外

財經(jīng)要聞

萬億美元順差背后,透露這些信號

汽車要聞

標配激光雷達/雙動力可選 昊鉑S600限時售17.99萬起

態(tài)度原創(chuàng)

數(shù)碼
手機
教育
時尚
親子

數(shù)碼要聞

英國監(jiān)管機構(gòu)警告:亞馬遜、eBay仍在售可能致命的假冒手機充電器

手機要聞

vivo X Fold6再預熱:天璣9500超能版+OriginOS 6 Fold

教育要聞

家長成了“瘋女人”,被女兒作業(yè)搞崩潰,網(wǎng)友:太真實

夏天別總穿一身白或一身黑!試試一半彩色、一半基礎色,高級亮眼

親子要聞

給孩子報個幼兒園還要工資流水?難道這就是傳說中的“因財施教”

無障礙瀏覽 進入關懷版