第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í)例,箭頭則指示所引用的對象。
把一個問題分解為小的問題,這個過程就是模塊化過程。
面向?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í)例,箭頭則指示所引用的對象。