亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php設計模式是什么,該如何理解

2024-09-04 11:43:40
字體:
來源:轉載
供稿:網友

做程序開發的朋友應該都聽說過設計模式這個詞,對于做java開發的,應該一聽到這個詞就明白是什么意思,但對于做PHP的朋友來說,往往越看越迷糊,那到底什么是設計模式呢?其實作者也不懂,下面是從網上摘抄的關于設計模式的一些解釋,期待能夠有一些理解.

php設計模式有如下:

備忘錄模式(Memento模式)

觀察者模式(Observer模式)

模板方法模式(Template Method模式)

命令模式(command模式)

合成模式(composite模式)

享元模式(flyweight模式)

策略模式(strategy模式)

狀態模式(state模式)

適配器模式(adapter模式)

工廠方法模式(factory method模式)

原型模式(prototype模式)

門面模式(facade模式)

單例模式(singleton模式)

橋梁模式(bridge模式)

裝飾器模式(decorator模式)

抽象工廠模式(abstract factory模式)

建造者模式(Builder模式)

訪問者模式(Visitor模式)

當你在不斷的試圖從你的應用程序中發現新的特征時,你是否發現你提出的解決方法和一些以前你已經實現的東西是如此的類似呢?如果你是一個程序員(即使你才開始很短的時間),你都可能回答“是”,這看起來就是你使用了一些以前的代碼來解決軟件開發過程中新發現的問題了,你可能已經認識到:你的解決方法是基本原理,是一個不僅僅是你而且是所有專業開發者都能廣泛重復應用的方法.

事實上,許多程序問題都不斷的反復的遇到,而且許多用來解決這些問題的基本方法(或者說是設計模式)都已經浮現出來,設計模式就是一個教你如何利用真實可靠的設計來組織你的代碼的模板.

設計模式歷史

“設計模式”這個術語最初被設計用于建筑學領域,Christopher Alexander 在他1977的著作“A Pattern Language:Towns/Building/Construction”里面描述了一些常見的建筑學設計問題,并解釋了如何用這些已有的,著名的模式集合來開始全新的有效的設計,Alexander的觀點被很好的轉化到軟件開發上來,并且長期的用原有的組件來構造新的解決方案.

所有的設計模式都有一些常用的特性:一個標識(a name),一個問題陳述(a problem statement)和一個解決方案(a solution).

1、一個設計模式的標識是重要的,因為它會讓其他的程序員不用進行太深入的學習就能立刻理解你的代碼的目的(至少通過這個標識程序員會很熟悉這個模式)。

2、問題描述是用來說明這個模式的應用的領域。

3、解決方案描述了這個模型的執行。一個好的設計模式的論述應該覆蓋使用這個模型的優點和缺點。

一個模式是解決特定問題的有效方法。一個設計模式不是一個庫(能在你的項目中直接包含和使用的代碼庫)而是一個用來組織你的代碼的模板。事實上,一個代碼庫和一個設計模式在應用上是有很多不同的。

比如,你從店鋪里面買的一件襯衫是一個代碼庫,它的顏色,樣式和大小都由設計師和廠商決定,但它滿足了你的需求。然而,如果店里面沒有什么衣服適合你,那你就能自己創建自己的襯衫(設計它的形狀,選擇布料,然后裁縫在一起)。但是如果你不是一個裁縫,你可能會發現自己很容易的去找一個合適的模式然后按著這個模式去設計自己的襯衫。使用一個模型,你可以在更少的時間內得到一個熟練設計的襯衫。

回到討論軟件上來,一個數據提取層或者一個CMS(content management system)就是一個庫,它是先前設計好而且已經編碼好了的,如果它能準確的滿足你的需要那它就是一個好的選擇。

工廠模式

工廠模式(Factory)允許你在代碼執行時實例化對象,它之所以被稱為工廠模式是因為它負責“生產”對象,工廠方法的參數是 你要生成的對象對應的類名稱.

代碼如下:Example #1 調用工廠方法(帶參數)

  1. <?php 
  2. class Example 
  3.     // The parameterized factory method 
  4.     public static function factory($type
  5.     { 
  6.         if (include_once 'Drivers/' . $type . '.php') { 
  7.             $classname = 'Driver_' . $type
  8.             return new $classname
  9.         } else { 
  10.             throw new Exception ('Driver not found'); 
  11.         } 
  12.     } 
  13. ?> 

按上面的方式可以動態加載drivers,如果Example類是一個數據庫抽象類,那么 可以這樣來生成MySQL和 SQLite驅動對象:

  1. <?php 
  2. // Load a MySQL Driver 
  3. $mysql = Example::factory('MySQL');
  4. // Load a SQLite Driver 
  5. $sqlite = Example::factory('SQLite');
  6. ?> 

單例:單例模式(Singleton)用于為一個類生成一個唯一的對象,最常用的地方是數據庫連接,使用單例模式生成一個對象后,該對象可以被其它眾多對象所使用.

Example #2 單例模式

  1. <?php 
  2. class Example 
  3.     // 保存類實例在此屬性中 
  4.     private static $instance
  5.        // 構造方法聲明為private,防止直接創建對象 
  6.     private function __construct()  
  7.     { 
  8.         echo 'I am constructed'
  9.     }
  10.     // singleton 方法 
  11.     public static function singleton()  
  12.     { 
  13.         if (!isset(self::$instance)) { 
  14.             $c = __CLASS__
  15.             self::$instance = new $c
  16.         } 
  17.         return self::$instance
  18.     } 
  19.     // Example類中的普通方法 
  20.     public function bark() 
  21.     { 
  22.         echo 'Woof!'
  23.     } 
  24.     // 阻止用戶復制對象實例 
  25.     public function __clone() 
  26.     { 
  27.         trigger_error('Clone is not allowed.', E_USER_ERROR); 
  28.     } 
  29. ?> 

這樣我們可以得到一個獨一無二的Example類的對象.

  1. <?php 
  2. // 這個寫法會出錯,因為構造方法被聲明為private 
  3. $test = new Example; 
  4. // 下面將得到Example類的單例對象 
  5. $test = Example::singleton(); 
  6. $test->bark(); 
  7. // 復制對象將導致一個E_USER_ERROR. 
  8. $test_clone = clone $test
  9. ?> 

最后一個想法:就象一個裁縫模型,一個設計本身而言是沒有什么用處的,畢竟,你不可能穿一個服裝模型,它僅僅是由很薄的紙拼湊起來的,類似的,一個軟件設計模型也僅僅只是一個引導,它必須根據程序設計語言和你的應用程序的特點和要求而特別的設計.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲成人午夜免费大片| 亚洲美女免费精品视频在线观看| 欧美黑人视频一区| 4444欧美成人kkkk| 在线播放国产一区中文字幕剧情欧美| 国产精品亚洲第一区| 亚洲国产高清高潮精品美女| 日韩在线中文字| 欧美另类极品videosbestfree| 国产精品久久久久久网站| 午夜精品久久17c| 精品久久久香蕉免费精品视频| 欧美性受xxxx白人性爽| 国产精品久久9| 久久亚洲私人国产精品va| 亚州欧美日韩中文视频| 国产日韩在线视频| 自拍偷拍免费精品| 欧美大成色www永久网站婷| 欧美自拍大量在线观看| 国产精品久久久久久搜索| 欧美丝袜美女中出在线| 精品成人国产在线观看男人呻吟| 欧美日韩美女在线观看| 77777少妇光屁股久久一区| 在线日韩中文字幕| 国产精品久久久久久久久久| 亚洲aⅴ男人的天堂在线观看| 亚洲大胆美女视频| 激情成人中文字幕| 欧美一乱一性一交一视频| 精品在线欧美视频| 欧洲成人午夜免费大片| 日韩免费观看视频| 最近2019中文字幕一页二页| 45www国产精品网站| 国产免费一区二区三区在线观看| 欧美国产视频日韩| 国产97人人超碰caoprom| 中文字幕日韩精品在线观看| 国内精品久久久久影院 日本资源| 日韩日本欧美亚洲| 亚洲精品小视频在线观看| 尤物99国产成人精品视频| 久久精品视频在线播放| 国产精品偷伦视频免费观看国产| 国产精品青草久久久久福利99| 操91在线视频| 中文字幕欧美国内| 久久亚洲精品毛片| 日韩欧美大尺度| 久久99热这里只有精品国产| 国产97人人超碰caoprom| 久久高清视频免费| 久久久久久成人精品| 久久不射电影网| 国产精品91在线| 亚洲成人久久久久| 亚洲欧洲第一视频| 日韩美女免费观看| 日韩精品日韩在线观看| 欧美另类极品videosbestfree| 欧美一区三区三区高中清蜜桃| 欧美大秀在线观看| 狠狠躁18三区二区一区| 欧美理论电影网| 亚洲精品videossex少妇| 日韩视频免费在线观看| 欧美夫妻性生活xx| 成人免费福利视频| 欧美亚洲午夜视频在线观看| 欧美精品免费播放| 欧美国产日韩视频| 亚洲一区二区久久久久久久| 日韩成人在线电影网| 欧美一区在线直播| 欧美精品videosex牲欧美| 精品国内产的精品视频在线观看| 欧美与欧洲交xxxx免费观看| 亚洲乱码国产乱码精品精天堂| 国产精品九九九| 国产成人高潮免费观看精品| 国产精品久久av| 亚洲free性xxxx护士hd| 欧美成人全部免费| 国产亚洲精品91在线| 亚洲欧美三级在线| 午夜免费久久久久| 国产精品自在线| 精品视频9999| 欧美成人免费一级人片100| 日日狠狠久久偷偷四色综合免费| 大胆人体色综合| 91国内产香蕉| 亚洲国产精品一区二区三区| 亚洲在线免费看| 日韩久久精品电影| 国产精品久久91| 欧美黑人xxxⅹ高潮交| 日韩人在线观看| 亚洲国产精品高清久久久| 欧美性视频精品| 色yeye香蕉凹凸一区二区av| 97久久超碰福利国产精品…| 国产日韩欧美电影在线观看| 国产免费一区视频观看免费| 亚洲欧美第一页| 日韩精品极品在线观看播放免费视频| 日韩欧美亚洲国产一区| 国产日韩欧美在线看| 久久久亚洲天堂| 亚洲欧洲日产国产网站| 中文字幕亚洲欧美在线| 欧洲成人免费aa| 97人人模人人爽人人喊中文字| 精品国产91久久久| 欧美激情精品在线| 国产日韩欧美视频| www.亚洲男人天堂| 国产精品久久二区| 中文字幕日韩综合av| 成人午夜激情免费视频| 96sao精品视频在线观看| 欧美亚洲伦理www| 国产精品99久久久久久人| 欧美电影免费观看电视剧大全| 国产最新精品视频| 久久精品99久久香蕉国产色戒| 韩日欧美一区二区| 国产视频久久久| 上原亚衣av一区二区三区| 亚洲色图偷窥自拍| 538国产精品视频一区二区| 欧美日韩一区二区三区在线免费观看| 日韩av成人在线观看| www.日韩不卡电影av| 91伊人影院在线播放| 成人免费视频a| 成人欧美一区二区三区在线湿哒哒| 久久成人18免费网站| 亚洲欧美自拍一区| 亚州欧美日韩中文视频| 欧美日韩激情视频8区| 色香阁99久久精品久久久| 精品久久久999| 国产成人啪精品视频免费网| 国产精品揄拍一区二区| 久久欧美在线电影| 日韩在线中文字幕| 国外成人免费在线播放| 久久久在线视频| 色综合天天狠天天透天天伊人| 国产精品大陆在线观看| 亚洲jizzjizz日本少妇| 欧美大片第1页| 日韩在线观看网站| 成人黄色大片在线免费观看| 日韩经典一区二区三区| 亚洲国产小视频| 成人性生交大片免费看视频直播| 国产伊人精品在线| 亚洲成年人在线| 欧美老女人bb| 97精品国产97久久久久久|