這篇文章給大家分享的是PHP物件導向之三大基本特性與五大基本原則 ,有需要的朋友可以參考一下文章的內容
#所謂封裝,也就是把客觀事物封裝成抽象的類,並且類別可以把自己的資料和方法只讓可信的類別或物件操作,對不可信的進行資訊隱藏。
封裝是物件導向的特徵之一,是物件和類別概念的主要特性。 簡單的說,一個類別就是一個封裝了資料以及操作這些資料的程式碼的邏輯實體。在一個物件內部,某些程式碼或某些資料可以是私有的,不能被外界存取。透過這種方式,物件對內部資料提供了不同程度的保護,以防止程式中無關的部分意外的變更或錯誤的使用了物件的私有部分。
所謂繼承是指可以讓某個類型的物件獲得另一個類型的物件的屬性的方法,它支援按級分類的概念。
繼承是指這樣一種能力:它可以使用現有類別的所有功能,並在無需重新編寫原始的類別的情況下對這些功能進行擴展。 透過繼承創建的新類別稱為“子類別”或“衍生類別”,被繼承的類別稱為“基底類別”、“父類別”或“超類別”。繼承的過程,就是從一般到特殊的過程。要實現繼承,可以透過「繼承」(Inheritance)和「組合」(Composition)來實現。繼承概念的實作方式有二類:實作繼承與介面繼承。實作繼承是指直接使用基底類別的屬性和方法而無需額外編碼的能力;介面繼承是指僅使用屬性和方法的名稱、但是子類別必須提供實作的能力;
所謂多態就是指一個類別實例的相同方法在不同情形有不同表現形式。
多態機制使具有不同內部結構的物件可以共用相同的外部介面。這意味著,雖然針對不同物件的特定操作不同,但透過一個公共的類,它們(那些操作)可以透過相同的方式予以調用。
是指一個類別的功能要單一,不能包羅萬象。如同同一個人一樣,分配的工作不能太多,否則一天到晚雖然忙碌的,但效率卻高不起來。
一個模組在擴展性方面應該是開放的而在更改性方面應該是封閉的。例如:一個網路模組,原來只服務端功能,而現在要加入客戶端功能,
那麼應當在不用修改服務端功能碼的前提下,就能夠增加客戶端功能的實作程式碼,這要求在設計之初,就應將服務端和客戶端分開,公共部分抽象化。
子類別應可以取代父類別並出現在父類別能夠出現的任何地方。例如:公司搞年度晚會,所有員工可以參加抽獎,那麼不管是老員工還是新員工,
也不管是總部員工還是外派員工,都應當可以參加抽獎,否則這公司就不和諧了。
假設B是較A低的模組,但B需要使用到A的功能,這個時候,B不應當直接使用A中的具體類: 而應當由B定義一抽象接口,並由A來實作這個抽象接口,B只使用這個抽象接口:這樣就達到
了依賴倒置的目的,B也解除了對A的依賴,反過來是A依賴於B定義的抽象接口。透過上層模組難以避免依賴下層模組,假如B也直接依賴A的實現,那麼就可能造成循環依賴。一個常見的問題就是編譯A模組時需要直接包含到B模組的cpp文件,而編譯B時同樣要直接包含到A的cpp檔。
模組間要透過抽象介面隔離開,而不是透過具體的類別強耦合起來
相關推薦:
#以上是PHP物件導向之三大基本特性與五大基本原則的詳細內容。更多資訊請關注PHP中文網其他相關文章!