開放封閉原則(OCP,Open-Closed Principle),光從名稱來看的話,這個其實是相當矛盾的一種原則,要怎麼又開放,又封閉呢?其實這個更具體的來說是要「開放擴充」、「封閉修改」,例如我們寫了一個服務,這個服務他提供了MS-SQL的資料提供,這個時候公司下一個案子進來了,客戶是用Oracle資料庫時,我們如果去修改了原始提供服務的類別,那麼就違背了這個原則,那我們應該怎麼做呢?我們應該為資料提供類別取出抽象的介面,而資料的提供都依賴這個介面,如此一來,我們就可以輕鬆的替換原始的邏輯了。