iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
自我挑戰組

C# 從入門到WebApi系列 第 16

[Day16] 淺出 Solid 關於開放封閉原則

  • 分享至 

  • xImage
  •  

開放封閉原則

英文為Open-Closed Principle (OCP)
又是開放又是封閉
哪個天才把兩個相反的詞放在一起
這個原則指的是
軟體中的對象應該對於擴展是開放的,但是對於修改是封閉的
簡單而言
對於修改是封閉的 --> 當老闆今天改動了需求 你不需要去變動原本的程式碼
對於擴展是開放的 --> 當老闆想要這個又想要那個新功能 可以透過增加新的程式碼來增加功能
不是修改遠本的程式碼來達成需求

這個原則是軟體架構的大原則
在我們設計一個程式架構的時候
我們常常顧著完成功能而疏忽架構性
以至於最後要新增或修改你的程式碼的時候
會變成牽一髮動全身
改了A發現B爆了
修正了B以後C跟D也炸開了
這就是缺乏良好架構所導致的高耦合性

關於車子的故事

我們今天想要換一輛車的的車燈
我們不需要將引擎拔下來
我們只需要將車子的燈泡換一個新的就行
同理
想要痛你的機車
不用先拆坐墊
也不用付八萬一跟大小聲
只要用噴漆將車子噴一噴就好

如何達成OCP呢

實際上5個設計原則是相輔相成的
要達成OCP所需要的正是其他4個原則
其中的重點是在實作之間都隔離一層抽象(ISP)
並透過多形改變行為(LSP)

閒聊

這幾篇不太會有甚麼程式碼
只是講講對於SOLID的心得
看似少但是其實比起語法而言
是跨語言而泛用的

上班上到一半看到新聞
小鬼R.I.P


上一篇
[Day15] 淺出SOLID 關於單一職責原則(SRP)
下一篇
[DAY17] 淺出SOLID 關於里氏替換原則
系列文
C# 從入門到WebApi30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言