溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP原型模式是什么及怎么應(yīng)用

發(fā)布時(shí)間:2023-03-23 15:24:11 來(lái)源:億速云 閱讀:122 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹了PHP原型模式是什么及怎么應(yīng)用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇PHP原型模式是什么及怎么應(yīng)用文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

原型模式,屬于創(chuàng)建型模式的一種。 主要針對(duì)對(duì)象進(jìn)行克隆,把被克隆的對(duì)象稱之為原型,原型模式稱之為克隆模式也許更為貼切。 用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。

適用場(chǎng)景:
  • 實(shí)例化對(duì)象的資源開(kāi)銷過(guò)大時(shí)可直接克隆。

  • 需要循環(huán)創(chuàng)建大量對(duì)象,此時(shí)用克隆也是一個(gè)挺不錯(cuò)的選擇。

優(yōu)點(diǎn):
  • 高性能:如果創(chuàng)建對(duì)象的過(guò)程復(fù)雜,或者消耗大量資源,那么直接克隆就可以高性能的簡(jiǎn)化這一流程。

  • 實(shí)現(xiàn)簡(jiǎn)單,某些場(chǎng)景下,相比于實(shí)例化對(duì)象的各種前置操作,而克隆一個(gè)關(guān)鍵字就能搞定。

缺點(diǎn):

克隆出來(lái)的對(duì)象與原型對(duì)象不是一個(gè),可能在某些業(yè)務(wù)場(chǎng)景上,可能會(huì)受影響

代碼:

//抽象出來(lái)一個(gè)操作系統(tǒng)的類
abstract class OS {
    public $os;
    //setOS可以理解為安裝操作系統(tǒng)
    public function installOS($os) {
        $this->os = $os;
    }

    //runOS可以理解為運(yùn)行操作系統(tǒng)
    public function runOS() {
        return $this->os . PHP_EOL;
    }

    //__clone方法是原型模式中需要有的,盡管可能用不上
    abstract function __clone();
}


class Windows extends OS{
    public function __clone() {}
}


class Linux extends OS{
    public function __clone() {}
}


//調(diào)用端============================================
//偉大的工程師們開(kāi)發(fā)好了兩套操作系統(tǒng)
$windows = new Windows();
$linux   = new Linux();

//把它們克隆到光盤上,分別給3個(gè)用戶安裝。這樣就不用在從零開(kāi)發(fā)操作系統(tǒng)了,直接復(fù)制開(kāi)銷極小,然后把它們運(yùn)行起來(lái)。
for($i = 0; $i < 3; $i ++) {
    $new_windows = clone $windows;
    $new_windows->installOS('windows');
    echo $new_windows->runOS();
}


//把它們克隆到光盤上,分別給2個(gè)用戶安裝。這樣就不用在從零開(kāi)發(fā)操作系統(tǒng)了,直接復(fù)制開(kāi)銷極小,然后把它們運(yùn)行起來(lái)。
for($j = 0; $j < 2; $j ++) {
    $new_linux = clone $linux;
    $new_linux->installOS('linux');
    echo $new_linux->runOS();
}

關(guān)于“PHP原型模式是什么及怎么應(yīng)用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“PHP原型模式是什么及怎么應(yīng)用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI