首頁  >  文章  >  後端開發  >  PHP設計模式學習之「原型模式」淺析

PHP設計模式學習之「原型模式」淺析

PHPz
PHPz轉載
2023-03-23 09:01:24504瀏覽

這篇文章帶大家了解一下PHP設計模式的原型模式,介紹一下適用場景、優缺點,以及實現程式碼,有興趣的朋友下面一起來看一下吧,希望對大家有幫助。

PHP設計模式學習之「原型模式」淺析

原型模式,屬於創建型模式的一種。 主要針對物件進行克隆,把被克隆的物件稱為原型,原型模式稱之為克隆模式也許更為貼切。 用原型實例指定創建物件的種類,並且透過拷貝這些原型創建新的物件。

適用場景:

  • 實例化物件的資源開銷過大時可直接複製。

  • 需要循環創建大量對象,此時用克隆也是一個挺不錯的選擇。

優點:

  • #高效能:如果建立物件的流程複雜,或消耗大量資源,那麼直接克隆就可以高性能的簡化這項流程。

  • 實作簡單,某些場景下,比起實例化物件的各種前置操作,而複製一個關鍵字就能搞定。

缺點:

複製出來的物件與原型物件不是一個,可能在某些業務場景上,可能會受影響

程式碼:

//抽象出来一个操作系统的类
abstract class OS {
    public $os;
    //setOS可以理解为安装操作系统
    public function installOS($os) {
        $this->os = $os;
    }

    //runOS可以理解为运行操作系统
    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() {}
}


//调用端============================================
//伟大的工程师们开发好了两套操作系统
$windows = new Windows();
$linux   = new Linux();

//把它们克隆到光盘上,分别给3个用户安装。这样就不用在从零开发操作系统了,直接复制开销极小,然后把它们运行起来。
for($i = 0; $i < 3; $i ++) {
    $new_windows = clone $windows;
    $new_windows->installOS(&#39;windows&#39;);
    echo $new_windows->runOS();
}


//把它们克隆到光盘上,分别给2个用户安装。这样就不用在从零开发操作系统了,直接复制开销极小,然后把它们运行起来。
for($j = 0; $j < 2; $j ++) {
    $new_linux = clone $linux;
    $new_linux->installOS(&#39;linux&#39;);
    echo $new_linux->runOS();
}

推薦學習:《PHP影片教學

以上是PHP設計模式學習之「原型模式」淺析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除