《PHP設(shè)計(jì)模式介紹》導(dǎo)言_PHP教程
推薦:php escapeshellcmd多字節(jié)編碼漏洞漏洞公告在http://www.sektioneins.de/advisories/SE-2008-03.txt PHP 5 = 5.2.5 PHP 4 = 4.4.8 一些允許如GBK,EUC-KR, SJIS等寬字節(jié)字符集的系統(tǒng)都可能受此影響,影響還是非常
當(dāng)你在不斷的試圖從你的應(yīng)用程序中發(fā)現(xiàn)新的特征時(shí),你是否發(fā)現(xiàn)你提出的解決方法和一些以前你已經(jīng)實(shí)現(xiàn)的東西是如此的類(lèi)似呢?如果你是一個(gè)程序員(即使你才 開(kāi)始很短的時(shí)間),你都可能回答“是”。這看起來(lái)就是你使用了一些以前的代碼來(lái)解決軟件開(kāi)發(fā)過(guò)程中新發(fā)現(xiàn)的問(wèn)題了。你可能已經(jīng)認(rèn)識(shí)到:你的解決方法是基本 原理,是一個(gè)不僅僅是你而且是所有專(zhuān)業(yè)開(kāi)發(fā)者都能廣泛重復(fù)應(yīng)用的方法。
事實(shí)上,許多程序問(wèn)題都不斷的反復(fù)的遇到,而且許多用來(lái)解決這些問(wèn)題的基本方法(或者說(shuō)是設(shè)計(jì)模式)都已經(jīng)浮現(xiàn)出來(lái)。設(shè)計(jì)模式就是一個(gè)教你如何利用真實(shí)可靠的設(shè)計(jì)來(lái)組織你的代碼的模板。
設(shè)計(jì)模式歷史
“設(shè)計(jì)模式”這個(gè)術(shù)語(yǔ)最初被設(shè)計(jì)用于建筑學(xué)領(lǐng)域。Christopher Alexander 在他1977的著作“A Pattern Language :Towns/Building/Construction”里面描述了一些常見(jiàn)的建筑學(xué)設(shè)計(jì)問(wèn)題,并解釋了如何用這些已有的,著名的模式集合來(lái)開(kāi)始全新 的有效的設(shè)計(jì)。Alexander的觀點(diǎn)被很好的轉(zhuǎn)化到軟件開(kāi)發(fā)上來(lái),并且長(zhǎng)期的合意的用原有的組件來(lái)構(gòu)造新的解決方案。
所有的設(shè)計(jì)模式都有一些常用的特性:一個(gè)標(biāo)識(shí)(a name),一個(gè)問(wèn)題陳述(a problem statement)和一個(gè)解決方案(a solution)。
- 一個(gè)設(shè)計(jì)模式的標(biāo)識(shí)是重要的,因?yàn)樗鼤?huì)讓其他的程序員不用進(jìn)行太深入的學(xué)習(xí)就能立刻理解你的代碼的目的(至少通過(guò)這個(gè)標(biāo)識(shí)程序員會(huì)很熟悉這個(gè)模式)。
- 問(wèn)題描述是用來(lái)說(shuō)明這個(gè)模式的應(yīng)用的領(lǐng)域。?
- 解決方案描述了這個(gè)模型的執(zhí)行。一個(gè)好的設(shè)計(jì)模式的論述應(yīng)該覆蓋使用這個(gè)模型的優(yōu)點(diǎn)和缺點(diǎn)。
一個(gè)模式是解決特定問(wèn)題的有效方法。一個(gè)設(shè)計(jì)模式不是一個(gè)庫(kù)(能在你的項(xiàng)目中直接包含和使用的代碼庫(kù))而是一個(gè)用來(lái)組織你的代碼的模板。事實(shí)上,一個(gè)代碼庫(kù)和一個(gè)設(shè)計(jì)模式在應(yīng)用上是有很多不同的。
比如,你從店鋪里面買(mǎi)的一件襯衫是一個(gè)代碼庫(kù),它的顏色,樣式和大小都由設(shè)計(jì)師和廠商決定,但它滿足了你的需求。
然而,如果店里面沒(méi)有什么衣服適合你,那你就能自己創(chuàng)建自己的襯衫(設(shè)計(jì)它的形狀,選擇布料,然后裁縫在一起)。但是如果你不是一個(gè)裁縫,你可能會(huì)發(fā)現(xiàn)自 己很容易的去找一個(gè)合適的模式然后按著這個(gè)模式去設(shè)計(jì)自己的襯衫。使用一個(gè)模型,你可以在更少的時(shí)間內(nèi)得到一個(gè)熟練設(shè)計(jì)的襯衫。
回到討論軟件上來(lái),一個(gè)數(shù)據(jù)提取層或者一個(gè)CMS(content management system)就是一個(gè)庫(kù)——它是先前設(shè)計(jì)好而且已經(jīng)編碼好了的,如果它能準(zhǔn)確的滿足你的需要那它就是一個(gè)好的選擇。但如果你正在讀這本書(shū),可能你會(huì)發(fā)現(xiàn) 庫(kù)存的(原有的)解決方案并不是總是對(duì)你有效。至今你知道什么是你所要的,而且你能夠?qū)崿F(xiàn)它,你僅僅需要一個(gè)模型來(lái)引導(dǎo)你。
最后一個(gè)想法:就象一個(gè)裁縫模型,一個(gè)設(shè)計(jì)本身而言是沒(méi)有什么用處的。畢竟,你不可能穿一個(gè)服裝模型——它僅僅是由很薄的紙拼湊起來(lái)的。類(lèi)似的,一個(gè)軟件設(shè)計(jì)模型也僅僅只是一個(gè)引導(dǎo)。它必須根據(jù)程序設(shè)計(jì)語(yǔ)言和你的應(yīng)用程序的特點(diǎn)和要求而特別的設(shè)計(jì)。
本書(shū)的目標(biāo)
本書(shū)的目的不是為了全面的介紹各種類(lèi)別的軟件設(shè)計(jì)模式,也不是為了發(fā)展一個(gè)新的設(shè)計(jì)模式或者術(shù)語(yǔ),而是為了突出介紹一些已有的著名的設(shè)計(jì)模式。這本書(shū)的 獨(dú)特之處在于介紹了一些我認(rèn)為對(duì)開(kāi)發(fā)動(dòng)態(tài)WEB應(yīng)用程序很有幫助的設(shè)計(jì)模式,而且用PHP語(yǔ)言顯示了如何實(shí)現(xiàn)這些設(shè)計(jì)模式。
面對(duì)對(duì)象編程O(píng)OP
這本書(shū)一個(gè)優(yōu)點(diǎn)就是所有的觀點(diǎn)都是基于OOP這種很自然的設(shè)計(jì)模式,并且用OOP來(lái)實(shí)現(xiàn)。
如果你不熟悉OOP,有很多相關(guān)的資源(書(shū)籍,網(wǎng)站,雜志,上課等等)來(lái)幫助你更好的了解它。大多數(shù)OOP資料都贊美它的好處——代碼重用,代碼健壯,代 碼封裝,多態(tài)和可擴(kuò)展性,當(dāng)然所有的這些也是非常重要和有用的。然而,我認(rèn)為OOP最主要的優(yōu)點(diǎn)是它如何激勵(lì)你親手將問(wèn)題分解成易處理的模塊。清晰的設(shè)計(jì) 和實(shí)現(xiàn),分解成小的模塊,這樣你的代碼能夠得到更加徹底的測(cè)試而且也更加容易理解和維護(hù)。
讀者技能要求
這本書(shū)假定你已經(jīng)能夠流暢的使用PHP了。特別地,這本書(shū)假設(shè)你已經(jīng)了解了PHP和PHP語(yǔ)法的運(yùn)作知識(shí)而且懂得用OOP執(zhí)行PHP代碼的基本原理。這本書(shū)不是一本PHP編程的介紹書(shū),也不是為了介紹PHP的OOP編程的。
由于不是所有的OOP開(kāi)發(fā)者都使用相同的術(shù)語(yǔ),當(dāng)有新的術(shù)語(yǔ)被引入時(shí),我都將在正文中或者工具條中定義。
分享:詳細(xì)講解PHP中緩存技術(shù)的應(yīng)用PHP,一門(mén)最近幾年興起的web設(shè)計(jì)腳本語(yǔ)言,由于它的強(qiáng)大和可伸縮性,近幾年來(lái)得到長(zhǎng)足的發(fā)展,php相比傳統(tǒng)的asp網(wǎng)站,在速度上有絕對(duì)的優(yōu)勢(shì),想mssql轉(zhuǎn)6萬(wàn)條數(shù)據(jù)php如需要40秒,asp不下2分鐘.但是,由于
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-《PHP設(shè)計(jì)模式介紹》導(dǎo)言
。