文章目錄
-
- 一、概念
- 二、示例(C++ 實現)
-
- 1. 違反開閉原則的示例
- 2. 遵循開閉原則的示例
一、概念
開閉原則(Open-Closed Principle,OCP)是面向對象設計中的重要原則,由 Bertrand Meyer 提出,核心思想可以概括為:對擴展開放,對修改關閉。
具體來說,一個軟件實體(如類、模塊、函數等)應當允許在不修改其源代碼的前提下,通過擴展的方式來新增功能。這里的 “開放” 指的是允許擴展,“關閉” 指的是禁止修改原有代碼。
遵循開閉原則的好處在于:
-
減少修改原有代碼帶來的風險,避免引入新的 bug
-
提高代碼的可維護性和可擴展性
-
使系統更加穩定,老功能不會因為新增功能而受到影響
實現開閉原則的關鍵是抽象化,通過定義抽象的接口或基類,讓具體實現類去繼承和擴展,而高層模塊只依賴于抽象,不依賴具體實現。
開閉原則是一種結果,一種指導思想,并非手段,想實現開閉原則,還得借助抽象來實現。
二、示例(C++ 實現)
1. 違反開閉原則的示例
假設我們需要實現一個簡單的圖形計算器,計算不同圖形的面積。如果不遵循開閉原則,可能會這樣寫: