php設(shè)計(jì)模式第-章筆記

第1章 php與面向?qū)ο缶幊?/h1>
  • 把一個問題分解為小的問題,這個過程就是模塊化過程。

  • 面向?qū)ο缶幊痰氖滓瓌t之一:單一責(zé)任原則,這表示一個類應(yīng)當(dāng)只有一個責(zé)任。

    第2章 OOP基本概念

  • OOP(object-oriented programming):面向?qū)ο缶幊?/p>

    2.1抽象

  • 抽象 指示一個對象的基本特征,使它與其他對象區(qū)分開,從而從查看者的角度提供了清晰定義的概念邊界。

  • 抽象是用來處理復(fù)雜性的主要工具。一個問題越復(fù)雜,就越需要抽象來解決。

    2.1.1抽象類

  • 抽象類不能實(shí)例化,只能由具體類(也就是可以實(shí)例化的類)繼承抽象類的接口以及它的所有具體屬性。

  • 接口的核心部分由類中操作(函數(shù))定義的所以簽名組成。簽名包括一個操作的操作名和參數(shù)。

  • 一個抽象函數(shù),可以只包含接口,而不包含其他任何內(nèi)容。

  • 如果一個類至少有一個抽象方法,它必然是一個抽象類。不過,抽象類也可以有具體方法。

  • 屬性是指變量和常量(抽象數(shù)據(jù)),而方法是指函數(shù)(對數(shù)據(jù)的操作)。

  • 如果在一個抽象類中聲明了一個抽象方法,那么繼承這個父類的各個子類中都必須實(shí)現(xiàn)這個方法。

  • 抽象類可以根據(jù)需求增加具體方法和屬性。另外,抽象類也可以只包含具體方法。

    2.1.2接口

  • 接口:在抽象類中不包含具體方法或變量。

  • 只要保證實(shí)現(xiàn)了接口中的所有方法,就可以根據(jù)需求增加更多其他的方法和屬性。

  • 接口中不包含變量,但是可以包含常量。

  • 接口中也可以只包含常量而不包括任何方法。通過使用接口名、作用域解析操作符(::)和常量名,可以將這些常量值傳遞到類屬性。

  • 指定數(shù)據(jù)類型為接口而不是一個具體實(shí)現(xiàn)。

    2.2封裝

  • 封裝就是劃分一個抽象的諸多元素的過程,這些元素構(gòu)成該抽象的結(jié)構(gòu)和行為;封裝的作用就是將抽象的契約接口與其實(shí)現(xiàn)分離。

  • 把一個復(fù)雜的大問題模塊化為多個可解決的子問題,就可以利用封裝來得到這些較小的抽象,并對它們完成劃分。

  • 用戶界面(User Interface):UI

  • 信息隱藏:指一個模塊的細(xì)節(jié)可能是隱藏的,只能通過適當(dāng)?shù)脑L問渠道來使用這個模塊,而不能利用這個模塊的細(xì)節(jié)。

  • 可見性是指對類屬性的存取(或訪問)。PHP使用3種類型的可見性:private(私有)、protected(保護(hù))和public(公共)。

  • 設(shè)計(jì)模式的目的是建立對象之間的通信鏈路。保持封裝同時保持對象(類)之間通信的過程是設(shè)計(jì)模式的一個工作。

    2.3繼承

  • 繼承:一個類如果擴(kuò)展了另一個類,就會擁有這個類的所有屬性和方法。

  • 繼承有助于為程序中包含的不同類建立一種結(jié)構(gòu)。為了保證類之間的松綁定,通常會繼承抽象類,而且是淺繼承,只有一層子類。

    2.4多態(tài)

  • 多態(tài):指多種形態(tài)。價值在于,可以調(diào)用有相同接口的對象來完成不同的工作。

    第3章 基本設(shè)計(jì)模式概念

  • MVC的重要性還在于它展示了松耦合而不是直接調(diào)用功能。通過分離不同的元素(或參與者)來完成一個任務(wù),MVC可以提供大型程序所需的靈活性。

  • MVC的特點(diǎn)為:通過在視圖和模型之間建立一個訂購/通知協(xié)議,實(shí)現(xiàn)視圖和模型的解耦合。

    3.2設(shè)計(jì)模式基本原則

  • 第一個原則:按接口而不是按實(shí)現(xiàn)來編程。要將變量設(shè)置為一個抽象類或接口數(shù)據(jù)類型的實(shí)例,而不是一個具體實(shí)現(xiàn)的實(shí)例。這可以將設(shè)計(jì)與實(shí)現(xiàn)解耦合。

  • 類型提升可以幫助你盡可能遵守第一個設(shè)計(jì)模式原則,即按接口而不是按實(shí)現(xiàn)來編程。

  • 第二個原則:應(yīng)當(dāng)優(yōu)先選擇對象組合而不是類繼承。

  • 設(shè)計(jì)模式中的組合通常是指模式中一個參與者內(nèi)部的組合。

  • 在較大的程序中,組合可以避免維護(hù)多個繼承層面上的各個子類,而且還可以避免可能導(dǎo)致的錯誤。

    3.3設(shè)計(jì)模式作為備忘錄

  • 設(shè)計(jì)模式的作用可以分為3大類:創(chuàng)建型、結(jié)構(gòu)型、行為型。

  • 創(chuàng)建型模式就是用來創(chuàng)建對象的模式。

  • 結(jié)構(gòu)型模式關(guān)心的是組合結(jié)構(gòu)應(yīng)當(dāng)保證結(jié)構(gòu)化。

  • 行為型模式的核心是算法和對象之間的職責(zé)的分配。

    第4章 結(jié)合使用設(shè)計(jì)模式和UML

  • 類圖提供了一個設(shè)計(jì)模式視圖,從中很容易看出UML描述的關(guān)系。

  • 相似關(guān)系是指一個參與者包含另一個參與者的引用。

  • 聚合關(guān)系表示一個聚合對象與它的所有者有相同的生命周期。

  • 繼承和實(shí)現(xiàn)關(guān)系:使用“三角形”記法。

  • 創(chuàng)建關(guān)系:一個對象創(chuàng)建另一個對象的實(shí)例時,采用的記法時一條虛線。

  • 多重關(guān)系:相似或聚合關(guān)系的箭頭末端有一個圓球。

  • 對象圖提供了另一種表示方法,可以查看一個設(shè)計(jì)模式特定實(shí)現(xiàn)以及通過這個模式生成的對象之間的關(guān)系。對象圖可以清楚地表明對象關(guān)系。對象圖只顯示實(shí)例,箭頭則指示所引用的對象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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