0%

【Day-7】SOLID - 開放封閉原則(OCP)

文章同步於it邦

介紹

今天來說說開放封閉原則(OCP, Open-Close Principle)

一個軟體的製品應該對於擴展是開放的,但對於修改是封閉的
-Clean Architecture(P.59)

我們多少都遇過某些老專案會有加一個新功能就要改很多地方或是很難改的狀況
那麼參與設計這個軟體的架構的工程師,就是參與了一次極大的失敗。

OCP其實也是直接指導我們類別和模組化的原則。

實務

其實說起來他會有點像是單一職責的延伸
舉個我們以前會很常看到的架構 - 伺服器端渲染(SSR, server side render)
這就是非常典型高耦合的架構設計
當然我不是指所有的SSR都不好,但相較於CSR的耦合度就差非常多

在這個架構中我們會很常看到將前後端的Code混再一起
以PHP為例,滿常看到將PHP和HTML甚至CSS, JavaScript寫在一起的狀況
那當要修改一個小地方的時候我就必須連同前端後端的邏輯一並修正
這就會導致我們說的大量修改的狀況

那即便我們使用了其他方式
也必須確保這些元件的依賴是單向的

依賴關係

這樣是為了確保下層的改動的改動不會影響到上層的邏輯

參考資料

Clean Architecture(ch.8)