英文為Open-Closed Principle (OCP)
又是開放又是封閉
哪個天才把兩個相反的詞放在一起
這個原則指的是
軟體中的對象應該對於擴展是開放的,但是對於修改是封閉的
簡單而言
對於修改是封閉的 --> 當老闆今天改動了需求 你不需要去變動原本的程式碼
對於擴展是開放的 --> 當老闆想要這個又想要那個新功能 可以透過增加新的程式碼來增加功能
而不是修改遠本的程式碼來達成需求
這個原則是軟體架構的大原則
在我們設計一個程式架構的時候
我們常常顧著完成功能而疏忽架構性
以至於最後要新增或修改你的程式碼的時候
會變成牽一髮動全身
改了A發現B爆了
修正了B以後C跟D也炸開了
這就是缺乏良好架構所導致的高耦合性
我們今天想要換一輛車的的車燈
我們不需要將引擎拔下來
我們只需要將車子的燈泡換一個新的就行
同理
想要痛你的機車
不用先拆坐墊
也不用付八萬一跟大小聲
只要用噴漆將車子噴一噴就好
實際上5個設計原則是相輔相成的
要達成OCP所需要的正是其他4個原則
其中的重點是在實作之間都隔離一層抽象(ISP)
並透過多形改變行為(LSP)
這幾篇不太會有甚麼程式碼
只是講講對於SOLID的心得
看似少但是其實比起語法而言
是跨語言而泛用的
上班上到一半看到新聞
小鬼R.I.P