2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、zixue.it 燕十八精品PHP教程,,面向?qū)ο笈c設(shè)計模式-教你寫出優(yōu)雅的代碼,zixue.it 燕十八精品PHP教程,學(xué)習(xí)設(shè)計模式的意義設(shè)計模式概念先說多態(tài)簡單工廠模式工廠方法模式單例模式觀察者模式職責(zé)鏈模式策略模式裝飾模式適配器模式橋接模式,學(xué)習(xí)目錄,zixue.it 燕十八精品PHP教程,學(xué)習(xí)設(shè)計模式的意義1:更深入的理解面向?qū)ο蟮乃枷?2:有利于開發(fā)出擴(kuò)展性強(qiáng)的程序3:面試時的重要考察方面

2、,1:學(xué)習(xí)設(shè)計模式的意義,zixue.it 燕十八精品PHP教程,在軟件開發(fā)過程中,經(jīng)常出現(xiàn)的典型場景的典型解決方案,稱為設(shè)計模式,2:設(shè)計模式的概念,生活中也有很多設(shè)計模式:象棋招法,泡妞思路,電影懸疑等等,zixue.it 燕十八精品PHP教程,2.1:動手造幾個設(shè)計模式,典型場景: 同學(xué)聚會典型問題: 問你工資典型解決: ??,典型場景: QQ,屌絲,女神典型問題: 女神,還沒睡?典型解決: ??,如何學(xué)習(xí)設(shè)計模式

3、?典型場景-->典型問題-->典型解決辦法,zixue.it 燕十八精品PHP教程,3:先說多態(tài),為什么先說多態(tài)?答: 多態(tài)相對封裝與繼承,理解稍微復(fù)雜一些. 更重要的是, 通過PHP,Java多態(tài)的不同體現(xiàn),體會靜態(tài)語言與動態(tài)語言的巨大差異 --而這個差異巨大,影響到設(shè)計模式.對于動態(tài)語言,不可照搬java,C++中的設(shè)計模式,zixue.it 燕十八精品PHP教程,3.1:多態(tài),多態(tài)(Poly

4、morphism) 是一個生物學(xué)上的概念,指同一特種的多種表現(xiàn)形態(tài).如:西伯利亞虎一般重210-260公斤,而孟加拉虎一般180-230公斤在面向?qū)ο笾?指某種對象實例的不同表現(xiàn)形態(tài).多態(tài)特點(diǎn),在靜態(tài)語言中體現(xiàn)的更為明顯.,zixue.it 燕十八精品PHP教程,3.2:老虎爬樹,如不明,可看多態(tài)詳細(xì)講解:http://www.zixue.it/article-122-1.html,,西伯利亞虎不能爬樹孟加拉虎可以爬樹

5、那么老虎,到底能否爬樹?[請看java與PHP演示體會靜態(tài)與動態(tài)的巨大差異],zixue.it 燕十八精品PHP教程,4:簡單工廠模式 Factory,zixue.it 燕十八精品PHP教程,4.1:分析問題,代碼執(zhí)行沒問題,調(diào)用沒問題!但是:你(客戶端,調(diào)用者)怎么知道我有個DBmysql類, 和 DBMysqli類?,1:客戶端應(yīng)該只看到接口,不應(yīng)該知道接口的實現(xiàn).體現(xiàn)封裝隔離原則.2:無論客戶端,而是后

6、端,都依賴于抽象接口,而非依賴于具體,zixue.it 燕十八精品PHP教程,4.2:解決問題,添加一個工廠,由工廠負(fù)責(zé)創(chuàng)造對象,并返回,zixue.it 燕十八精品PHP教程,4.3:用簡單工廠后,,zixue.it 燕十八精品PHP教程,4.4:用簡單工廠的真正意義,看似僅僅是把創(chuàng)建對象的過程包裝了一下,真正的變化在于"面向接口","隔離封裝",客戶端只知接口,不知具體實現(xiàn).后端的實

7、現(xiàn),只知接口,不管前端誰調(diào)用,zixue.it 燕十八精品PHP教程,4.5:簡單工廠需改進(jìn)之處,如果新增PDO方式,是否還要改Factory?修改if/else分支?違反開閉原則.另:這個工廠如果分支足夠多,能幫你創(chuàng)建所有的類,形成"萬能工廠",面向?qū)ο笤O(shè)計中,不推薦一個類的功能過多.我們可以把有相關(guān)關(guān)系的產(chǎn)品交由一個工廠生產(chǎn),zixue.it 燕十八精品PHP教程,1988年,勃蘭特·

8、梅耶(Bertrand Meyer)在他的著作《面向?qū)ο筌浖?gòu)造(Object Oriented Software Construction)》中提出了開閉原則,它的原文是這樣:“Software entities should be open for extension,but closed for modification”。翻譯過來就是:“軟件實體應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉”。通俗的說: 添加新類/接口等進(jìn)來行,修改不

9、行.,開閉原則,zixue.it 燕十八精品PHP教程,5.0:工廠方法 Factory Method,工廠方法中,一個工廠生產(chǎn)多個零件,但零件的共同特點(diǎn)是--屬于一個產(chǎn)品.即 此工廠可以生產(chǎn)產(chǎn)品,而非單獨(dú)的對象,zixue.it 燕十八精品PHP教程,6:單例模式 singleton 場景回放,zixue.it 燕十八精品PHP教程,6.1:問題--如何確保只制造一個對象?,1:對象的產(chǎn)生,需要new或者clone2:防止

10、產(chǎn)生過多的對象,要防止new和clone3:綜上,沒有對象時,允許new,并把對象緩存. 下次直接返回該對象,zixue.it 燕十八精品PHP教程,6.2:解決效果,zixue.it 燕十八精品PHP教程,6.3:模式解析,1:我學(xué)java時聽說有"懶漢式"和"餓漢式"單例模式答:PHP的屬性不支持表達(dá)式,不支持"餓漢式"2:php的單例,僅指進(jìn)程中單例,不似j

11、ava,在整個內(nèi)存中單例,zixue.it 燕十八精品PHP教程,7:觀察者模式 Observer,zixue.it 燕十八精品PHP教程,7.1:一般的思路,1:判斷選中的值2:順序下來,根據(jù)值,修改內(nèi)容區(qū)域3:再修改廣告區(qū)域.if(v == '男') { 內(nèi)容區(qū)背景變灰 廣告區(qū)內(nèi)容變成男人話題} else if(v == '女'){ 內(nèi)容區(qū)背景變粉 廣告區(qū)內(nèi)容變成

12、女人話題},問題在哪兒?1:讓你選擇時引起3個區(qū)域的變化,是否要修改if/elseif部分2:如果選擇女性樣式,但不要變粉,現(xiàn)在流行變紫色,是否又要修改if elseif部分?問題在于: 控制邏輯與被操作對象耦合嚴(yán)重.,zixue.it 燕十八精品PHP教程,7.2:解決辦法,我們讓div對象觀察select的變化,select變化,就會通知道這兩個對象.并引起這2個對象的變化,實現(xiàn)觀察者模式,zixue.it 燕十八

13、精品PHP教程,7.3:解決效果,select對象負(fù)責(zé)attach,detach,notifyObservers,與具體的對象變化解耦,zixue.it 燕十八精品PHP教程,8:職責(zé)鏈模式 chain of resionbility,zixue.it 燕十八精品PHP教程,8.1:一般做法,,POST發(fā)送數(shù)據(jù),PHP接收到數(shù)據(jù),判斷舉報的級別.if(粗口) { 啟動轉(zhuǎn)發(fā)給版主的流程} else if(黃賭毒) {

14、 啟動轉(zhuǎn)發(fā)給管理員的流程} else { 啟動轉(zhuǎn)發(fā)給公安的流程},,問題在哪兒:1:如果新增了舉報級別,要改if else 代碼段.2:如果流程內(nèi)部有改動,也要到if else 代碼段來操作.總結(jié):邏輯與執(zhí)行操作的對象耦合嚴(yán)重.,zixue.it 燕十八精品PHP教程,8.2:解決辦法-職責(zé)鏈模式,版主,管理員,公安,每個對象,儲存著對自己上級的引用,如果自己處理不了,交給上一級.,zixue.it 燕十八精品P

15、HP教程,8.3:解決之后-職責(zé)鏈模式,如下,只需要提交給版主即可,版主處理不了,會自動提交給上一級,直到處理完畢.,zixue.it 燕十八精品PHP教程,9:策略模式,zixue.it 燕十八精品PHP教程,9.1:一般的思路,根據(jù)傳遞的參數(shù)不同,進(jìn)行加減乘除運(yùn)算,思考: 如果想增加取模運(yùn)算又如何操作?想一想簡單工廠方法,是否有些相似? 又有哪些不同?通過接口,隔離封裝通過繼承,適應(yīng)變化,工廠模式,我們著眼于得到對象,

16、并操作對象,策略模式,我們著重得到對象某方法的運(yùn)行結(jié)果,zixue.it 燕十八精品PHP教程,9.1:策略的實現(xiàn) strategy,context對象持有計算對象并計算結(jié)果直接返回,zixue.it 燕十八精品PHP教程,10:裝飾器模式 decorator,這是一篇帖子帖子的內(nèi)容我寫好了, 三個部門的人員想控制他.編輯組要添導(dǎo)讀文字審核組要去敏感字市場部想在末尾加點(diǎn)廣告我只是一篇帖子,由你們來處置吧,分析:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論