面向?qū)ο蟮娜蠡咎卣?,五大基本原則

三大基本特征:封裝、繼承、多態(tài)

  1. 封裝
    封裝就是隱藏對象的屬性和實現(xiàn)細節(jié),僅對外公開接口,控制在程序中屬性的讀和修改的訪問級別,將抽象得到的數(shù)據(jù)和行為(或功能)相結(jié)合,形成一個有機的整體,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進行有機的結(jié)合,形成“類”,其中數(shù)據(jù)和函數(shù)都是類的成員。
    封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現(xiàn)細節(jié),而只是要通過外部接口,以特定的訪問權(quán)限來使用類的成員。
    面相對象的不就是使用程序處理事情時以對象為中心去分析嗎,與面向過程不同,面向過程關(guān)心處理的邏輯、流程等問題,而不關(guān)心事件主體。而面向?qū)ο蠹疵嫦蛑黧w,所以我們在解決問題時應該先進行對象的封裝(對象是封裝類的實例,比如張三是人,人是一個封裝類,張三只是對象中的一個實例、一個對象)。比如我們?nèi)粘I钪械男⊥米印⑿【d羊都可以封裝為一個類。
  2. 繼承
    繼承是面向?qū)ο蟮幕咎卣髦?,繼承機制允許創(chuàng)建分等級層次的類。繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。繼承之間是子父類的關(guān)系。繼承機制可以很好的描述一個類的生態(tài),也提高了代碼復用率,在Java中的Object類是所有類的超類,常稱作上帝類。
  3. 多態(tài)
    多態(tài)同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。是指一個類實例(對象)的相同方法在不同情形有不同表現(xiàn)形式。多態(tài)機制使具有不同內(nèi)部結(jié)構(gòu)的對象可以共享相同的外部接口。這意味著,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調(diào)用。
    多態(tài)的優(yōu)點:
  • 消除類型之間的耦合關(guān)系
  • 可替換性
  • 可擴充性
  • 接口性
  • 靈活性
  • 簡化性

五大基本原則

  1. 單一職責原則(SRP)
    一個類應該有且只有一個去改變它的理由,這意味著一個類應該只有一項工作。
    比如在職員類里,將工程師、銷售人員、銷售經(jīng)理這些情況都放在職員類里考慮,其結(jié)果將會非?;靵y,在這個假設(shè)下,職員類里的每個方法都要if else判斷是哪種情況,從類結(jié)構(gòu)上來說將會十分臃腫。
  2. 開放封閉原則(OCP)
    對象或?qū)嶓w應該對擴展開放,對修改封閉。更改封閉即是在我們對模塊進行擴展時,勿需對源有程序代碼和DLL進行修改或重新編譯文件!這個原則對我們在設(shè)計類的時候很有幫助,堅持這個原則就必須盡量考慮接口封裝,抽象機制和多態(tài)技術(shù)!
  3. 里氏替換原則(LSP)
    在對象 x 為類型 T 時 q(x) 成立,那么當 S 是 T 的子類時,對象 y 為類型 S 時 q(y) 也應成立。(即對父類的調(diào)用同樣適用于子類)
  4. 依賴倒置原則(DIP)
    高層次的模塊不應該依賴于低層次的模塊,他們都應該依賴于抽象。具體實現(xiàn)應該依賴于抽象,而不是抽象依賴于實現(xiàn)。
    可以這樣理解,上面我舉例子的時候先說了兔子和綿羊,然后才推出食草動物。但如果我們繼續(xù)認識了牛、馬等食草動物,我們會發(fā)現(xiàn)我們需要不斷調(diào)整食草動物的描述,這樣程序會變得僵化,所以我們不應該讓子類依賴于實體,不應該讓父類模塊依賴于子類模塊。所以我們需要將食草動物設(shè)計為抽象類,即抽象類或接口。這樣下層只需要實現(xiàn)相應的細節(jié)而不會影響父類。
  5. 接口隔離原則(ISP)
    不應強迫客戶端實現(xiàn)一個它用不上的接口,或是說客戶端不應該被迫依賴它們不使用的方法,使用多個專門的接口比使用單個接口要好的多!
    比如,為了減少接口的定義,將許多類似的方法都放在一個接口中,最后會發(fā)現(xiàn),維護和實現(xiàn)接口的時候花了太多精力,而接口所定義的操作相當于對客戶端的一種承諾,這種承諾當然是越少越好,越精練越好,過多的承諾帶來的就是你的大量精力和時間去維護!
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容