IT培訓-高端面授IT培訓機構
          云和教育:云和數據集團高端IT職業教育品牌
          • 國家級
            全民數字素養與技能培訓基地
          • 河南省
            第一批產教融合型企業建設培育單位
          • 鄭州市
            數字技能人才(碼農)培養評價聯盟

          PHPer必學的進階教程:PHP面向對象設計的五個基準原則

          • 發布時間:
            2019-08-12
          • 版權所有:
            云和教育
          • 分享:

          學習PHP的朋友們都知道,PHP在中小型企業的應用是非常廣泛包括建站、小程序、CRM與OA等。那么作為基礎中的基礎,PHP面向對象你又掌握了多少呢?

          配圖1 PHP面向對象設計的五個基準原則.jpg

          今天這篇文章,就來給大家講一講關于面向對象的一些事,希望能對大家有所幫助。

          什么是面向對象?

          配圖2 PHP面向對象設計的五個基準原則.jpg

          面向對象就是把生活中要解決的問題都用對象的方式進行存儲–把所有的數據用屬性、方法表現出來。

          面向對象編程就是編程的時候數據結構(數據組織方式 )都通過對象的結構進行存儲,使用屬性和方法組織起來。對象之間的互動是通過方法的調用完成互動。

          對象的描述方式更加貼合真實世界,有利于對大型業務的理解,具有多人合作方便、減少代碼的冗余、靈活性高、代碼的可重用性發揮到極致、可擴展性等優勢。

          五大設計原則——SOLID

          學習面向對象編程像“抽象”、“封裝”、“多態”、“繼承” 等基礎知識是重要的,但同時為了創建簡潔、模塊化的設計,了解這些設計原則也同等重要。

          接下來,本文就為大家介紹面向對象設計的5個基本原則:

          S – 單一功能原則(SRP)

          O – 開閉原則(OCP)

          L – 里氏替換原則(LSP)

          I – 接口隔離原則(DIP)

          D – 依賴倒置原則(OCP)

          單一職責原則

          配圖3 PHP面向對象設計的五個基準原則.jpg

          單一職責有兩個含義:一個是避免相同的職責分散到不同的類中, 別一個是避免一個類承擔太多職責。

          遵守SPR原則的優勢:

          ●減少類之間的耦合:當需求變化時,只修改一個類,從而隔離了變化帶來類對其他職責的影響

          ●提高類的復用性:按需引用,一個類負責一個職責,需求的變動只需要修改對應的類或增加某一職責

          ●降低類的復雜度:職責單一,功能分散開降低一個類多個職責類的復雜度

          不遵守SRP會影響對類的復用性。當只需要用該類的某一個職責時,由于它和其他的職責耦合在一起,也就很難分離出。

          代碼示例:

          配圖4 PHP面向對象設計的五個基準原則.jpg

          開閉原則

          對象和實體應該對擴展開放,但是對修改關閉。

          簡單的說就是,一個類應該不用修改其自身就能很容易擴展其功能。

          比如:一個網絡模塊,原來只服務端功能,而現在要加入客戶端功能,那么應當在不用修改服務端功能代碼的前提下,就能夠增加客戶端功能的實現代碼,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。

          代碼示例:

          配圖5 PHP面向對象設計的五個基準原則.jpg

          里氏替換原則

          如果對每一個類型為 T1的對象 o1,都有類型為 T2 的對象o2,使得以 T1定義的所有程序 P 在所有的對象 o1 都代換成 o2 時,程序 P 的行為沒有發生變化,那么類型 T2 是類型 T1 的子類型。

          這句定義的意思是說:每個子類或者衍生類可以毫無問題地替代基類/父類。

          這就好比:公司搞年度晚會,所有員工可以參加抽獎,那么不管是老員工還是新員工,也不管是總部員工還是外派員工,都應當可以參加抽獎,否則這公司就不和諧了。

          代碼示例:

          配圖6 PHP面向對象設計的五個基準原則.jpg

          接口隔離原則

          接口隔離原則是指:客戶端不應該被強制去實現于它不需要的接口。

          有一個清晰的例子來說明示范這條原則。當一個類需要一個大量的設置項,為了方便不會要求客戶端去設置大量的選項,因為在通常他們不需要所有的設置項。使設置項可選有助于我們避免產生“胖接口”。

          代碼示例:

          配圖7 PHP面向對象設計的五個基準原則.jpg

          依賴倒置原則

          這條原則說明兩個基本的要點:

          ●高階的模塊不應該依賴低階的模塊,它們都應該依賴于抽象

          ●抽象不應該依賴于實現,實現應該依賴于抽象

          這條起初看起來有點晦澀難懂,但是如果你使用過PHP框架(例如 Symfony),你應該見過依賴注入(DI)對這個概念的實現。雖然它們不是完全相通的概念,依賴倒置原則使高階模塊與低階模塊的實現細節和創建分離。可以使用依賴注入(DI)這種方式來實現它。更多的好處是它使模塊之間解耦。耦合會導致你難于重構,它是一種非常糟糕的的開發模式。

          代碼示例:

          配圖8 PHP面向對象設計的五個基準原則.jpg

          總結

          面向對象設計需要遵守如上原則,不過實際的代碼設計一定要簡單、簡單、簡單。在實際編碼中要根據情況進行取舍,一味遵守原則,而不注重實際情況的話,可能會讓你的代碼變的難以理解