玩轉C#之【SOLID】

閱讀時間約 4 分鐘

介紹

何謂原則(Principle)
  • A principle is a concept or value that is a guide for behavior or evaluation
  • 所謂【原則】(Principle)就是一種【概念】或【價值】,用來導引你產生適切的行為與價值評量方法
白話文解釋
  • 依循SOLID原則,可以寫出比較好的程式碼
  • 依循SOLID原則,能夠判斷程式碼的好壞
背起來
  • 單一責任原則SRP(Single Responsibility Principle)
  • 開放封閉原則OCP(Open Closed Principle)
  • 里氏替換原則LSP(Liskov Substitution Principle)
  • 介面隔離原則ISP(Interface Segregation Principle)
  • 相依反轉原則DIP(Dependence Inversion Principle)
學習SOLID物件導向設計原則的好處
  • 降低程式碼複雜程度
  • 具有較佳程式碼可讀性
  • 提升模組可重複利用性
  • 讓模組具有高內聚,低耦合力
  • 面臨變更需求時可減少破壞現有模組的風險

單一責任原則SRP

何謂責任(Responsibility)
  • 責任= reason to change (改變的理由)
  • 當一個類別擁有多個不同的責任,意味者一個類別責任多項不同的工作,當需求變更時,更動一個類別的理由也可能不只一個

開放封閉原則OCP

  • Software entities(classes,modules,functions,etc.) should be open for extension but closed for modification
  • 軟體實體(類別、模組、函式等)應能開放擴充但封閉修改
  • 藉由增加新的程式碼來擴充系統的功能,而不是藉由修改原本已經存在的程式碼來擴充系統

里氏替換原則LSP

  • Subtypes must be substitutable for their base types.subtypes(衍生類別) = 類別
    base types(基底類別) =介面、抽象類別、基底類別
  • 子型別必須可替換為他的基底型別
  • 如果你的程式有採用繼承介面,然後建立出幾個不同的衍生型別(Subtype)。在你的系統中只要是基底型別出現的地方,都可以用子型別來取代,而不會破壞程式原有的行為。

介面隔離原則ISP

  • A:Many client specific interfaces are better than one general purpose interface.
  • B:Clients should not be forced to depend upon interface that they don't use.
  • A:多個用戶端專用的介面優於一個通用需求介面
  • B:用戶端不應該強迫相依於沒用到的介面
  • 針對不同需求的用戶端,僅開放其對應需求的介面就好

相依反轉原則DIP

  • A.High-level modules should not depend on low-level modules.Both should depend on abstractions.
  • B.Abstractions should not depend on details.Details should depend on abstractions.
  • A.高階模組不應該依賴於低階模組,兩者都應相依於抽象高階模組=>Caller(呼叫端)
    低階模組=>Callee(被呼叫端)
  • B.抽象不應該相依於細節,而細節則應該相依於抽象

參考資料

本篇已同步發表至個人部落格
https://moushih.com/2022ithome22/
鐵人賽文章
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
8會員
39內容數
我是這個部落格的作者,喜歡分享有關投資 💰、軟體開發 💻、占卜 🔮 和虛擬貨幣 🚀 的知識和經驗。
留言0
查看全部
發表第一個留言支持創作者!
一代軍師 的其他內容
介紹 非同步程式設計模式(Asynchronous Programming Patterns) APM 非同步程式設計模型 EAP 事件架構非同步模式 TAP 以工作為基礎的非同步模式 先在主要以TAP APM (Asynchronous Programming Model) 非同步程式設計模型.N
介紹 委派的非同步方法 可以透過BeginInvoke執行委派的非同步方法 Action<T>.BeginInvoke(<T> obj,AsyncCallback callback,Object @object) 第一個內容的 obj,只的是要傳入acction委派的參數 第二個AsyncCallb
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
介紹 計算機架構相關名詞 📷 中央處理器 (CPU)Central Processing Unit Processors (處理器) Sockets (實體插槽) Cores (實體核心) Logical processors (邏輯核心) 超執行緒(HT)Hyper-Threading Tec
Array 在記憶體中連續分配,而且元素類型是一樣的,長度不變 優點:讀取快,可以使用座標訪問 缺點:新增、刪除慢 記憶體: 📷 範例程式碼: ArrayList 不定長度,在記憶體中連續分配的,元素沒有類型限制,任何元素都是當成object處理,如果是值類型,會有裝箱的操作 優點:讀取快 缺點:
介紹 這章節純看智商 不可逆加密:原文加密後變成密文,但密文沒辦法解密文回原文 可逆加密:原文加密過後的密文,可以在將密文解密回原文 對稱:表示加解密是否使用同一個key MD5 不可逆加密 MD5 使用的命名空間是 System.Security.Cryptography MD5是一種公開的算法
介紹 非同步程式設計模式(Asynchronous Programming Patterns) APM 非同步程式設計模型 EAP 事件架構非同步模式 TAP 以工作為基礎的非同步模式 先在主要以TAP APM (Asynchronous Programming Model) 非同步程式設計模型.N
介紹 委派的非同步方法 可以透過BeginInvoke執行委派的非同步方法 Action<T>.BeginInvoke(<T> obj,AsyncCallback callback,Object @object) 第一個內容的 obj,只的是要傳入acction委派的參數 第二個AsyncCallb
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
介紹 計算機架構相關名詞 📷 中央處理器 (CPU)Central Processing Unit Processors (處理器) Sockets (實體插槽) Cores (實體核心) Logical processors (邏輯核心) 超執行緒(HT)Hyper-Threading Tec
Array 在記憶體中連續分配,而且元素類型是一樣的,長度不變 優點:讀取快,可以使用座標訪問 缺點:新增、刪除慢 記憶體: 📷 範例程式碼: ArrayList 不定長度,在記憶體中連續分配的,元素沒有類型限制,任何元素都是當成object處理,如果是值類型,會有裝箱的操作 優點:讀取快 缺點:
介紹 這章節純看智商 不可逆加密:原文加密後變成密文,但密文沒辦法解密文回原文 可逆加密:原文加密過後的密文,可以在將密文解密回原文 對稱:表示加解密是否使用同一個key MD5 不可逆加密 MD5 使用的命名空間是 System.Security.Cryptography MD5是一種公開的算法
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
【尊重,是人際關係的基石】—取自一分鐘,小故事。 蘇東坡和佛印和尚是很好的朋友,但是兩人都喜歡彼此嘲諷對方,每次見了面,不互相較勁一下總不肯罷休。 儘管這樣激烈的脣槍舌劍常常上演,卻似乎沒有減損他們的友誼。 據說,有一天,蘇東坡與佛印兩人一起坐著打禪。 一會兒功夫,蘇東坡睜開眼問佛印:「你看
Thumbnail
(2024年10月3日的小故事思考,2024年10月8日的個人思考紀錄) 【沒有絕對的是與紛非】—取自絕對讓你感悟的小故事 善於思考成就了智者。 智者有兩個徒弟。一次,他們看到屋裏飛進一隻蜜蜂,蜜蜂努力地朝窗外飛,卻被窗上厚厚的玻璃擋住了,一次次徒勞地摔下來。 徒弟甲說:「這隻蜜蜂真是愚
Thumbnail
(2024年10月2日的小故事,2024年10月7日個人思考紀錄) 【郭子儀寵辱不驚】—蕩氣迴腸的90則歷史故事 人獲得了一定的權勢、地位,便容易受到別人的猜忌,也是福禍共生。 唐朝名將郭子儀深知此點,反其道而行,敞開府門,任人探究,結果化凶為吉,平安無事。 郭子儀爵封汾(音同焚
Thumbnail
(2024年10月1日的小故事,2024年10月6日個人思考記錄) 【騎單車的感覺更好】 有一個人因為生意失敗,迫不得已變賣了新購的住宅,而且連他心愛的小跑車也脫了手,所以單車代步。 一日,他和太太一起,約了幾對私交的夫妻出遊,其中一位朋友的新婚妻子因為不知詳情,見到他們夫婦共乘一輛單
Thumbnail
(2024年9月30日的小故事,2024年10月6日個人思考記錄) 【先把事情做對】 一個小徒弟拜師學理髮。徒弟很聰明,學得很認真,手腳也靈活,深得師傅喜歡。學習刮臉刮鬍子時,師傅先讓他在一個大葫蘆瓜上練習。 小徒弟一招一式地練,動作很細很輕,頗得師傅誇讚,就是養成了一個懷習慣:每次練
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
暢銷懸疑小說的《法庭遊戲》改編為電影版,日前也在台灣上映,燒腦的情節加上法庭的諜對諜攻防;再加上永瀨廉、杉咲花、北村匠海三位高人氣演員加持。
Thumbnail
自2020年問世以來,日本潮流品牌Water The Plant便以其獨特的設計理念和色彩豐富的產品系列,在全球潮流文化中掀起了一股正能量的旋風。
Thumbnail
戴姆勒克萊斯勒出產的後輪驅動雙門跑車 Chrysler Crossfire(火線),使用 33% 賓士 SLK 跑車零件,在 2003 年推出,於 2007 年因為公司重組後停產。雖然,1:1 的新車買不起,那買台 1:18 的模型車來玩玩總是可以的。😜
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
【尊重,是人際關係的基石】—取自一分鐘,小故事。 蘇東坡和佛印和尚是很好的朋友,但是兩人都喜歡彼此嘲諷對方,每次見了面,不互相較勁一下總不肯罷休。 儘管這樣激烈的脣槍舌劍常常上演,卻似乎沒有減損他們的友誼。 據說,有一天,蘇東坡與佛印兩人一起坐著打禪。 一會兒功夫,蘇東坡睜開眼問佛印:「你看
Thumbnail
(2024年10月3日的小故事思考,2024年10月8日的個人思考紀錄) 【沒有絕對的是與紛非】—取自絕對讓你感悟的小故事 善於思考成就了智者。 智者有兩個徒弟。一次,他們看到屋裏飛進一隻蜜蜂,蜜蜂努力地朝窗外飛,卻被窗上厚厚的玻璃擋住了,一次次徒勞地摔下來。 徒弟甲說:「這隻蜜蜂真是愚
Thumbnail
(2024年10月2日的小故事,2024年10月7日個人思考紀錄) 【郭子儀寵辱不驚】—蕩氣迴腸的90則歷史故事 人獲得了一定的權勢、地位,便容易受到別人的猜忌,也是福禍共生。 唐朝名將郭子儀深知此點,反其道而行,敞開府門,任人探究,結果化凶為吉,平安無事。 郭子儀爵封汾(音同焚
Thumbnail
(2024年10月1日的小故事,2024年10月6日個人思考記錄) 【騎單車的感覺更好】 有一個人因為生意失敗,迫不得已變賣了新購的住宅,而且連他心愛的小跑車也脫了手,所以單車代步。 一日,他和太太一起,約了幾對私交的夫妻出遊,其中一位朋友的新婚妻子因為不知詳情,見到他們夫婦共乘一輛單
Thumbnail
(2024年9月30日的小故事,2024年10月6日個人思考記錄) 【先把事情做對】 一個小徒弟拜師學理髮。徒弟很聰明,學得很認真,手腳也靈活,深得師傅喜歡。學習刮臉刮鬍子時,師傅先讓他在一個大葫蘆瓜上練習。 小徒弟一招一式地練,動作很細很輕,頗得師傅誇讚,就是養成了一個懷習慣:每次練
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
暢銷懸疑小說的《法庭遊戲》改編為電影版,日前也在台灣上映,燒腦的情節加上法庭的諜對諜攻防;再加上永瀨廉、杉咲花、北村匠海三位高人氣演員加持。
Thumbnail
自2020年問世以來,日本潮流品牌Water The Plant便以其獨特的設計理念和色彩豐富的產品系列,在全球潮流文化中掀起了一股正能量的旋風。
Thumbnail
戴姆勒克萊斯勒出產的後輪驅動雙門跑車 Chrysler Crossfire(火線),使用 33% 賓士 SLK 跑車零件,在 2003 年推出,於 2007 年因為公司重組後停產。雖然,1:1 的新車買不起,那買台 1:18 的模型車來玩玩總是可以的。😜