【设计模式】AD-原型模式(Prototype)

前言

原型模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 php中底层已实现__clone()魔术方法,不需要其他操作即可进行对象的克隆。

使用场景

在原型实例化需要使用大量资源的情况下,new一个类的实例是很浪费的行为,而有的时候我们又需要多个实例对应用进行服务。此时可以直接使用clone $obj来进行原型复制,跳过复杂的实例化和配置行为。

实现方法

可直接使用php魔术方法__clone()

demo

在直接实例化的情况下的运行时间

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

程序幼儿员-龚学鹏
请先登录后发表评论
  • latest comments
  • 总共0条评论