原型模式
# 原型模式
- 创建型模式
- 作用: 原型模式的主要思想是基于现有的对象克隆一个新的对象出来
- 原型模式适用于大对象的创建, 创建一个大对象需要很大的开销如果每次new就会消耗很大原型模式仅需内存拷贝即可 这样就免去了类创建时重复的初始化操作
# 流程图

# 示例代码
抽象类代码: 这里主要是 __clone() 方法
<?php
namespace App\Prototype;
abstract class BookPrototype
{
/**
* @var string
*/
protected $title;
/**
* @var string
*/
protected $category;
/**
* @abstract
* @return void
*/
abstract public function __clone();
/**
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* @param string $title
*/
public function setTitle($title)
{
$this->title = $title;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 实现类代码
<?php
namespace App\Prototype;
class BarBookPrototype extends BookPrototype
{
protected $category = 'Bar';
public function __clone()
{
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
use App\Prototype\BarBookPrototype;
require __DIR__.'/../../vendor/autoload.php';
$barBook = new BarBookPrototype();
$barBook->setTitle("测测");
echo $barBook->getTitle();
// 使用 clone
$cloneBarBook = clone $barBook;
echo "</br>";
echo $cloneBarBook->getTitle();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
上次更新: 2022/10/10, 22:05:05