在經歷了幾個專案之後,對設計的重要性體會更加深刻,並且當專案稍大時,物件導向的感覺就越差,在搭建了框架之後,常常不能嚴格的物件導向,在某個地方需要一些額外的功能時,不是加函式就是加輔助類,設計完全被打破,使得耦合度增加,後期難以理解和維護。
物件導向簡單的講就是將資料和行為**在一起。因此,乙個物件首先擁有資料(屬性),然後才有行為(用來訪問活修改物件的屬性),因此,編碼中常常出現的乙個困擾是(可能是前期分析不全面,設計不周到),當需要增加一些服務,就很隨意的在用到的地方增加,這樣不僅破壞了物件導向的規則,也破壞了起初的設計,我們要做的應當是先要看要增加的服務需要哪些資料來支援,這些資料從行為和屬性上更接近於哪個類,然後把這些東西相應的加入到對應的類中,不破壞物件的封裝,既遵循了物件導向的規則,也保護了設計不被破壞。
認準了資料和行為,這樣動態修改起來就心中有數,游刃有餘。
最近看了一下《敏捷軟體開發》的第二部分後,對其中幾個著名的設計非常推崇,以前一直這麼做,但是不知道前人已經總結成理論了:
1、srp 單一職責原則:就乙個類而言,應當僅有乙個引起它變化的原因
2、ocp 開閉原則:對乙個類來說,應當對修改是封閉的,對擴充套件是開放的,支援擴充套件性
3、lsp liskov替換原則:子型別必須能夠替換掉它們的基類
4、dip 依賴倒置原則:抽象不應該依賴於細節,細節應該依賴抽象
5、介面隔離原則:不應該強迫客戶依賴於他們不用的方法。介面屬於客戶,不屬於它所在的類層次結構中
4、5的原理有點類似,也像設計模式中的橋接模式,都是將介面和實現分離,客戶只關注它希望的介面,而不關注具體的實現,具體的實現由底層的細節來做。待有時間了一一細述
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...
物件導向設計原則
物件設計原則 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原則 意味著兩點 1 ...
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...