最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PHP中的設(shè)計模式介紹

這篇文章運用簡單易懂的例子給大家介紹PHP中的設(shè)計模式介紹,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

10年積累的網(wǎng)站建設(shè)、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有朝陽免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

單例模式

單例模式的含義:

作為對象的創(chuàng)建模式,單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)全局地提供這個實例。它不會創(chuàng)建實例副本,而是會向單例類內(nèi)部存儲的實例返回一個引用。

單例模式的三個要素:

1. 保存類唯一實例的靜態(tài)變量。

2. 構(gòu)造函數(shù)和克隆函數(shù)必須是私有的,放在外部去實例化,這樣就不存在單例模式的意義。

3. 提供一個可供外部訪問的公共靜態(tài)方法,這個方法返回該類的唯一實例。

單例模式的意義:

在 PHP 中的應(yīng)用主要在于數(shù)據(jù)庫應(yīng)用, 所以一個應(yīng)用中會存在大量的數(shù)據(jù)庫操作, 在使用面向?qū)ο蟮姆绞介_發(fā)時, 如果使用單例模式, 則可以避免大量的 new 操作消耗的資源。而不完全是對系統(tǒng)資源的節(jié)省, 可以避免重復(fù)實例化,因為 PHP 每次實例化一個類之后都會清理掉對應(yīng)的資源,當(dāng)再次使用的時候又會在重新去實例化一次。

單例模式使用的場景:

1. 數(shù)據(jù)庫操作,減少對數(shù)據(jù)路的 new 操作,從而減少內(nèi)存資源和系統(tǒng)資源的消耗。

2. 配置資源的共享,在一個系統(tǒng)中,配置資源都是全局的,使用單例模式也可以減少每次去讀取配置帶來的內(nèi)存和系統(tǒng)資源的消耗。

代碼演示:

單例模式和非單例模式的區(qū)別:

class Single {
    public function index() {
        return '';
    }
}
$single1 = new Single();
$single2 = new Single();
var_dump($single1);
var_dump($single2);
if ($single2 === $single1) {
    echo "是同一個對象";
} else {
    echo "不是同一個對象";
}
// object(Single)#1 (0) {
// }
// object(Single)#2 (0) {
// }
// 不是同一個對象
class Single2 {
    // 1.聲明一個靜態(tài)屬性,用戶保存類的實例
    public static $instance;
    //3. 將構(gòu)函數(shù)私有化,避免外部new(每new一次,就不是同一個實例)
    private function __construct() {
    }
    // 2.聲明一個靜態(tài)的公共方法,用戶外部調(diào)用本類的實例
    public static function getInstance() {
        if (!(self::$instance instanceof self)) {
            self::$instance = new self;
        }
        return self::$instance;
    }
    //3. 克隆函數(shù)私有化,避免外部clone(每clone一次,就不是同一個實例)
    private function __clone() {
    }
}
$singleDemo1 = Single2::getInstance();
$singleDemo2 = Single2::getInstance();
var_dump($singleDemo1->getInstance());
var_dump($singleDemo2->getInstance());
if ($singleDemo1 === $singleDemo2) {
    echo "是同一個對象";
} else {
    echo "不是同一個對象";
}
// object(Single2)#3 (0) {
// }
// object(Single2)#3 (0) {
// }
// 是同一個對象

工廠模式

工廠模式的有含義:

負責(zé)生成其他對象的方法。簡單的描述就是通過一個工廠類,去實例化其他類或者方法。

工廠模式的意義:

通過使用工廠模式,減少因為多處 new 同一個類,當(dāng)這個類發(fā)生變法時,則需要多處修改。

代碼演示:

注冊樹模式

注冊數(shù)的含義:

注冊樹就是將多個對象注冊在一個對象池中,當(dāng)我們需要使用時,直接從對象池獲取即可。

注冊數(shù)模式的優(yōu)點:

單例模式解決的是如何在整個項目中創(chuàng)建唯一對象實例的問題,工廠模式解決的是如何不通過 new 建立實例對象的方法。

那么注冊樹模式想解決什么問題呢? 在考慮這個問題前,我們還是有必要考慮下前兩種模式目前面臨的局限。

首先,單例模式創(chuàng)建唯一對象的過程本身還有一種判斷,即判斷對象是否存在。存在則返回對象,不存在則創(chuàng)建對象并返回。

每次創(chuàng)建實例對象都要存在這么一層判斷。

工廠模式更多考慮的是擴展維護的問題。

總的來說,單例模式和工廠模式可以產(chǎn)生更加合理的對象。怎么方便調(diào)用這些對象呢?

而且在項目內(nèi)如此建立的對象好像散兵游勇一樣,不便統(tǒng)籌管理安排啊。因 而,注冊樹模式應(yīng)運而生。

不管你是通過單例模式還是工廠模式還是二者結(jié)合生成的對象,都統(tǒng)統(tǒng)給我 “插到” 注冊樹上。我用某個對象的時候,直接從注冊樹上取 一下就好。

這和我們使用全局變量一樣的方便實用。 而且注冊樹模式還為其他模式提供了一種非常好的想法。

代碼演示:

關(guān)于PHP中的設(shè)計模式介紹就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享標(biāo)題:PHP中的設(shè)計模式介紹
URL鏈接:http://fisionsoft.com.cn/article/pjcjji.html