亚洲福利网站,国产精品久久国产三级国电话系列 ,欧美久久久久久,蜜桃av在线

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

總結

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

主站蜘蛛池模板: 称多县| 上杭县| 司法| 鄂尔多斯市| 湟中县| 兴仁县| 普格县| 桂平市| 法库县| 阿坝| 崇阳县| 连平县| 宜丰县| 望谟县| 庆阳市| 常宁市| 贵州省| 凉山| 汾西县| 武鸣县| 古浪县| 凤城市| 搜索| 武胜县| 徐闻县| 阜阳市| 乌兰浩特市| 广德县| 玉田县| 隆德县| 安岳县| 阳城县| 南溪县| 咸宁市| 乃东县| 克山县| 马鞍山市| 遵义县| 蓝田县| 锡林郭勒盟| 蛟河市|