国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP設計模式

2019-11-08 03:18:20
字體:
來源:轉載
供稿:網友
1.單例模式    a.含義: 通過提供自身共享實例的訪問,單例設計模式用于限制特定對象只能被創建一次。    b.使用場景            1.例如數據庫實例,一般都會走單例模式。            2.單例模式可以減少類的實例化    c.代碼示例<?phpclass DB{ public static $instance =null; public static function instance(){ $class = get_called_class(); if(empty(self::$instance[$class])){ self:$instance[$class] = new $class(); } return self:$instance[$class]; }}2.觀察者模式    a.含義:觀察者設計模式能夠更便利創建和查看目標對象狀態的對象,并且提供和核心對象非耦合的置頂功能性。觀察者設計模式非常常用,在一般復雜的WEB系統中,        觀察者模式可以幫你減輕代碼設計的壓力,降低代碼耦合。    b.使用場景:        1.設計一個訂單類        2.訂單創建完成后,會做各種動作,比如發送EMAIL,或者改變訂單狀態等等。        3.原始的方法,是將這些操作都寫在create函數里面        4.但是隨著訂單創建類的越來越龐大,這樣的操作已經無法滿足需求和快速變動        5.這個時候,觀察者模式出現了。    c.代碼示例:    <?phpheader("Content-type:text/html;charset=UTF-8");class order{ PRotected $observers = array(); //增加觀察者 public function addObserver($type,$observer){ $this->observers[$type][] = $observer; } //運行觀察者 public function obServer($type){ if(isset($this->observers[$type])){ foreach ($this->observers[$type] as $key => $obser) { $a = new $obser; $a->update($this); } } } //下單購買流程 public function create(){ echo '購買成功<br>'; $this->obServer('buy'); }}class orderEmail{ public function update($order){ echo "發送購買成功的一個郵件<br>"; }}class orderStatus{ public function update($order){ echo "改變訂單狀態<br>"; }}$ob= new order();$ob->addObserver('buy','orderEmail');$ob->addObserver('buy','orderStatus');$ob->create();3.工廠模式    a.提供獲取某個對象實例的一個接口,同時使調用代碼避免確定實例化基類的步驟。       工廠模式 實際上就是建立一個統一的類實例化的函數接口。統一調用,統一控制。       工廠模式是php項目開發中,最常用的設計模式,一般會配合單例模式一起使用,來加載php類庫中的類。    b.應用場景        1.我們擁有一個Json類,String類,xml類。        2.如果我們不使用工廠方式實例化這些類,則需要每一個類都需要new一遍,過程不可控,類多了,到處都是new的身影        3.引進工廠模式,通過工廠統一創建對象實例。    c.代碼示例<?phpclass factory{ public static function create($class){ return new $class; }}class string{ public function write(){}}class json{ public function getJsonData(){}}class xml{ public function buildXml(){}}var_dump(factory::create('string'));4.策略模式    a.含義:策略模式設計幫助構建的對象不必自身包含邏輯,而是能夠根據需要利用其他對象中的算法    b.應用場景:        1.例如有一個CD類,我們類存儲了CD的信息。        2.原先的時候,我們在CD類中直接調用getCD方法給出XML的結果        3.隨著業務擴展,需求方提出需要JSON數據格式輸出        4.這個時候我們引進了策略模式,可以讓使用方根據需求自由選擇是輸出XML還是JSON    c.代碼示例<?phpclass cd{ protected $cdArr; public function __construct($title,$info){ $this->cdArr['title'] = $title; $this->cdArr['info'] = $info; } public function getCd($typeObj){ return $typeObj->get($this->cdArr); }}class json{ public function get($return_data){ return json_encode($return_data); }}class xml{ public function get($return_data){ $xml='<?xml version="1.0" encoding="utf-8" ?>'; $xml.='<return>'; $xml.='<data>'.serialize($return_data).'</data>'; $xml.='</return>'; return $xml; }}$cd = new cd('cd_1','cd_1');echo $cd->getCd(new json)."<br>";echo $cd->getCd(new xml)."<br>";
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹤庆县| 江都市| 连城县| 朝阳县| 江永县| 淳化县| 舒城县| 福海县| 滁州市| 兴国县| 青岛市| 凯里市| 大新县| 孝昌县| 上虞市| 达拉特旗| 宽甸| 淮阳县| 柳河县| 泽库县| 嘉定区| 略阳县| 兴国县| 璧山县| 涿州市| 辽源市| 黑龙江省| 浙江省| 齐河县| 平舆县| 克山县| 邯郸市| 武川县| 平遥县| 正宁县| 天津市| 玉田县| 崇礼县| 宽甸| 化德县| 黄梅县|