真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

常見的PHP設(shè)計(jì)模式有哪些

小編給大家分享一下常見的PHP設(shè)計(jì)模式有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)提供從項(xiàng)目策劃、軟件開發(fā),軟件安全維護(hù)、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評(píng)估等整套的建站服務(wù),主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè),重慶APP軟件開發(fā)以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。創(chuàng)新互聯(lián)深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

策略模式

策略模式是對(duì)象的行為模式,用意是對(duì)一組算法的封裝。動(dòng)態(tài)的選擇需要的算法并使用。

策略模式指的是程序中涉及決策控制的一種模式。策略模式功能非常強(qiáng)大,因?yàn)檫@個(gè)設(shè)計(jì)模式本身的核心思想就是面向?qū)ο缶幊痰亩嘈涡运枷搿?/p>

策略模式的三個(gè)角色:

1.抽象策略角色

2.具體策略角色

3.環(huán)境角色(對(duì)抽象策略角色的引用)

實(shí)現(xiàn)步驟:

1.定義抽象角色類(定義好各個(gè)實(shí)現(xiàn)的共同抽象方法)

2.定義具體策略類(具體實(shí)現(xiàn)父類的共同方法)

3.定義環(huán)境角色類(私有化申明抽象角色變量,重載構(gòu)造方法,執(zhí)行抽象方法)

就在編程領(lǐng)域之外,有許多例子是關(guān)于策略模式的。例如:

如果我需要在早晨從家里出發(fā)去上班,我可以有幾個(gè)策略考慮:我可以乘坐地鐵,乘坐公交車,走路或其它的途徑。每個(gè)策略可以得到相同的結(jié)果,但是使用了不同的資源。

策略模式的代碼實(shí)例:

PrintPage ();
            }
        }
        $bro = new Browser ();
    echo $bro->call ( new ieAgent () );
?>

工廠模式

工廠模式是我們最常用的實(shí)例化對(duì)象模式,是用工廠方法代替new操作的一種模式。

使用工廠模式的好處是,如果你想要更改所實(shí)例化的類名等,則只需更改該工廠方法內(nèi)容即可,不需逐一尋找代碼中具體實(shí)例化的地方(new處)修改了。為系統(tǒng)結(jié)構(gòu)提供靈活的動(dòng)態(tài)擴(kuò)展機(jī)制,減少了耦合。

';
    }
}
/**
 * Class women 繼承people的女人類
 */
class women implements people
{
    // 具體實(shí)現(xiàn)people的say方法
    public function say()
    {
        echo '我是女人
'; } } /** * Class SimpleFactoty 工廠類 */ class SimpleFactoty { // 簡(jiǎn)單工廠里的靜態(tài)方法-用于創(chuàng)建男人對(duì)象 static function createMan() { return new man(); } // 簡(jiǎn)單工廠里的靜態(tài)方法-用于創(chuàng)建女人對(duì)象 static function createWomen() { return new women(); } } /** * 具體調(diào)用 */ $man = SimpleFactoty::createMan(); $man->say(); $woman = SimpleFactoty::createWomen(); $woman->say();

單例模式

單例模式確保某個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。

單例模式是一種常見的設(shè)計(jì)模式,在計(jì)算機(jī)系統(tǒng)中,線程池、緩存、日志對(duì)象、對(duì)話框、打印機(jī)、數(shù)據(jù)庫(kù)操作、顯卡的驅(qū)動(dòng)程序常被設(shè)計(jì)成單例。

單例模式分3種:懶漢式單例、餓漢式單例、登記式單例。

單例模式有以下3個(gè)特點(diǎn):

1.只能有一個(gè)實(shí)例。

2.必須自行創(chuàng)建這個(gè)實(shí)例。

3.必須給其他對(duì)象提供這一實(shí)例。

那么為什么要使用PHP單例模式?

PHP一個(gè)主要應(yīng)用場(chǎng)合就是應(yīng)用程序與數(shù)據(jù)庫(kù)打交道的場(chǎng)景,在一個(gè)應(yīng)用中會(huì)存在大量的數(shù)據(jù)庫(kù)操作,針對(duì)數(shù)據(jù)庫(kù)句柄連接數(shù)據(jù)庫(kù)的行為,使用單例模式可以避免大量的new操作。因?yàn)槊恳淮蝞ew操作都會(huì)消耗系統(tǒng)和內(nèi)存的資源。

class Single {
    private $name;//聲明一個(gè)私有的實(shí)例變量
        private function __construct(){//聲明私有構(gòu)造方法為了防止外部代碼使用new來(lái)創(chuàng)建對(duì)象。
    }
        static public $instance;//聲明一個(gè)靜態(tài)變量(保存在類中唯一的一個(gè)實(shí)例)
        static public function getinstance(){//聲明一個(gè)getinstance()靜態(tài)方法,用于檢測(cè)是否有實(shí)例對(duì)象
        if(!self::$instance) self::$instance = new self();
            return self::$instance;
    }
    public function setname($n){ $this->name = $n; }
        public function getname(){ return $this->name; }
}
$oa = Single::getinstance();
$ob = Single::getinstance();
$oa->setname('hello world');
$ob->setname('good morning');
echo $oa->getname();//good morning
echo $ob->getname();//good morning

注冊(cè)模式

注冊(cè)模式,解決全局共享和交換對(duì)象。已經(jīng)創(chuàng)建好的對(duì)象,掛在到某個(gè)全局可以使用的數(shù)組上,在需要使用的時(shí)候,直接從該數(shù)組上獲取即可。將對(duì)象注冊(cè)到全局的樹上。任何地方直接去訪問(wèn)。

適配器模式

將各種截然不同的函數(shù)接口封裝成統(tǒng)一的API。
PHP中的數(shù)據(jù)庫(kù)操作有MySQL,MySQLi,PDO三種,可以用適配器模式統(tǒng)一成一致,使不同的數(shù)據(jù)庫(kù)操作,統(tǒng)一成一樣的API。類似的場(chǎng)景還有cache適配器,可以將memcache,redis,file,apc等不同的緩存函數(shù),統(tǒng)一成一致。
首先定義一個(gè)接口(有幾個(gè)方法,以及相應(yīng)的參數(shù))。然后,有幾種不同的情況,就寫幾個(gè)類實(shí)現(xiàn)該接口。將完成相似功能的函數(shù),統(tǒng)一成一致的方法。

#接口 IDatabase

MySQL

conn = $conn;
    }
    function query($sql)
        {
            $res = mysql_query($sql, $this->conn);
            return $res;
    }
    function close()
    {
        mysql_close($this->conn);
    }
}

MySQLi

conn = $conn;
    }
    function query($sql)
    {
        return mysqli_query($this->conn, $sql);
    }
    function close()
    {
        mysqli_close($this->conn);
    }
}

觀察者模式

1:觀察者模式(Observer),當(dāng)一個(gè)對(duì)象狀態(tài)發(fā)生變化時(shí),依賴它的對(duì)象全部會(huì)收到通知,并自動(dòng)更新。
2:場(chǎng)景:一個(gè)事件發(fā)生后,要執(zhí)行一連串更新操作。傳統(tǒng)的編程方式,就是在事件的代碼之后直接加入處理的邏輯。當(dāng)更新的邏輯增多之后,代碼會(huì)變得難以維護(hù)。這種方式是耦合的,侵入式的,增加新的邏輯需要修改事件的主體代碼。
3:觀察者模式實(shí)現(xiàn)了低耦合,非侵入式的通知與更新機(jī)制。
定義一個(gè)事件觸發(fā)抽象類。

EventGenerator.php
observers[]=$observer;
    }
    function notify(){
        foreach ($this->observers as $observer){
            $observer->update();
        }
    }
}

定義一個(gè)觀察者接口

Observer.php

實(shí)現(xiàn):

require 'Loader.php';
class Event extends EventGenerator{
    function triger(){
        echo "Event
"; } } class Observer1 implements Observer{ function update(){ echo "邏輯1
"; } } class Observer2 implements Observer{ function update(){ echo "邏輯2
"; } } $event = new Event(); $event->addObserver(new Observer1()); $event->addObserver(new Observer2()); $event->triger(); $event->notify();

看完了這篇文章,相信你對(duì)常見的PHP設(shè)計(jì)模式有哪些有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)站名稱:常見的PHP設(shè)計(jì)模式有哪些
當(dāng)前URL:http://weahome.cn/article/jhpcdo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部