原型模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
php中底层已实现__clone()
魔术方法,不需要其他操作即可进行对象的克隆。
在原型实例化需要使用大量资源的情况下,new一个类的实例是很浪费的行为,而有的时候我们又需要多个实例对应用进行服务。此时可以直接使用clone $obj
来进行原型复制,跳过复杂的实例化和配置行为。
可直接使用php魔术方法__clone()
在直接实例化的情况下的运行时间
class MyClass
{
/**
* 假设这个类初始化需要很长时间
* demo constructor.
*/
public function __construct()
{
sleep(3);
}
}
$time = microtime(true);
$demo = new MyClass();
$demo = new MyClass();
$demo = new MyClass();
echo microtime(true) - $time;
λ php demo.php
9.0005140304565
使用clone()
对原型进行复制
class MyClass
{
/**
* 假设这个类初始化需要很长时间
* demo constructor.
*/
public function __construct()
{
sleep(3);
}
}
$time = microtime(true);
$demo = new MyClass();
$demo1 = clone $demo;
$demo2 = clone $demo;
echo microtime(true) - $time;
λ php demo.php
3.0001711845398
本文为龚学鹏原创文章,转载无需和我联系,但请注明来自龚学鹏博客http://www.noobcoder.cn
最新评论