面向对象六大原则——开闭原则
生活随笔
收集整理的這篇文章主要介紹了
面向对象六大原则——开闭原则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是開閉原則(Open Close Principle, OCP)
?開閉原則是Java中最基礎的設計原則,它指導我們如何建立一個穩定的,靈活的系統。
- **定義:**一個軟件實體如類,模塊和函數應該對擴展開放,對修改關閉。
- 為什么使用開閉原則: 在程序的生命周期內,因為變化,升級和維護等原因需要對程序原有的代碼進行修改時,可能會給代碼引入錯誤,增加項目開發測試的復雜度,也可能會使我們不得不對整個功能進行重構,而且還要對原有的代碼進行測試。
開閉原則——我是你們的爸爸
?開閉原則是一個非常基礎的原則,其他的五個原則都是開閉原則的具體,也就是說其他的五個原則是指導設計的工具和方法,而開閉原則才是它們的精神領袖。從另一個角度說,開閉原則就是抽象類,其他五大原則是具體的實現類,開閉原則是一種綱領性的框架,五大原則在這個框架里添磚加瓦。所以這么說吧,只要我們遵守好其他的五大原則,那么我們設計的軟件自然就遵守了開閉原則,現在我們再好好回顧一下其他五大原則:
- 單一職責原則:應該有且僅有一個原因引起類的變更(一個接口或一個類只有一個原則,它就只負責一件事)
- 里式替換原則:子類型必須能替換掉它們的基類型
- 依賴倒置原則:
- 高層模塊不應該依賴低層模塊,兩者都應該依賴其抽象
- 抽象不應該依賴細節
- 細節應該依賴抽象
- 接口隔離原則:
- 客戶端不應該依賴它不需要的接口
- 類間的依賴關系應該建立在最小的接口上
- 迪米特法則:只與直接朋友進行通信
?簡單總結上面的五大原則就是:單一職責原則告訴我們實現類要職責單一;里式替換原則告訴我們不要破壞繼承體系;依賴倒置原則告訴我們要面向抽象編程;接口隔離原則告訴我們設計接口要精簡單一;迪米特法則告訴我們要降低耦合。而開閉原則告訴我們:要對修改關閉,對擴展開放。其實只要我們想一想,前面的五大原則一直反復強調的,幾乎每一個原則都在強調的宗旨是什么:解耦,單一,高內聚——這不就是開閉原則的精神綱領嗎。
把開閉原則應用于實際項目中,我們需要注意至關重要的一點:抽象約束
?抽象是對一組事物的通用描述,沒有具體的實現,也就表示它可以有非常多的可能性,可以跟隨需求的變化而變化。因此,通過接口或抽象類可以約束一組可能變化的行為,并且能夠實現對擴展開放,其包含三層含義:
- 通過接口或抽象類約束擴展,對擴展進行邊界限定,不允許出現在接口或抽象類中不存在的public方法
- 參數類型、引用對象盡量使用接口或者抽象類,而不是實現類
- 抽象層盡量保持穩定,一旦確定即不允許修改
參考書籍與鏈接
- 《設計模式之禪》
- https://blog.csdn.net/zhengzhb/article/details/7296944
總結
以上是生活随笔為你收集整理的面向对象六大原则——开闭原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 签名程序集密钥文件路径
- 下一篇: Ubuntu 10.10 下配置Teln