這篇文章帶大家了解一下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('windows'); echo $new_windows->runOS(); } //把它们克隆到光盘上,分别给2个用户安装。这样就不用在从零开发操作系统了,直接复制开销极小,然后把它们运行起来。 for($j = 0; $j < 2; $j ++) { $new_linux = clone $linux; $new_linux->installOS('linux'); echo $new_linux->runOS(); }
推薦學習:《PHP影片教學》
以上是PHP設計模式學習之「原型模式」淺析的詳細內容。更多資訊請關注PHP中文網其他相關文章!