簡介:
原型模式,屬于創建型模式的一種,
主要針對物件進行克隆,把被克隆的物件稱之為原型,原型模式稱之為克隆模式也許更為貼切,
用原型實體指定創建物件的種類,并且通過拷貝這些原型創建新的物件,
適用場景:
- 實體化物件的資源開銷過大時可直接克隆,
- 需要回圈創建大量物件,此時用克隆也是一個挺不錯的選擇,
優點:
- 高性能:如果創建物件的程序復雜,或者消耗大量資源,那么直接克隆就可以高性能的簡化這一流程,
- 實作簡單,某些場景下,相比于實體化物件的各種前置操作,而克隆一個關鍵字就能搞定,
缺點:
克隆出來的物件與原型物件不是一個,可能在某些業務場景上,可能會受影響
代碼:
//抽象出來一個作業系統的類
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();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/531445.html
標籤:其他
上一篇:SAS 日期處理(一)
