设计模式-- 原型模式

原型模式在很多框架中都有用到比如:yii2中 $query1 = clone $query;这就是原型模式的使用;

原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。适用于大对象的创建,因为创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝即可。

它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口

角色分析:

1.抽象原型,提供了一个克隆的接口

       2.具体的原型,实现克隆的接口

/**抽象原型类
 * Class Prototype
 */
abstract class Prototype
{
   abstract function cloned();
}
 
/**具体原型类
 * Class Plane
 */
class Plane extends Prototype
{
 
    public $color;
 
    function Fly()
    {
        echo "飞机飞啊飞!<br/>";
    }
 
    function cloned()
    {
        return clone $this;
    }
}
header("Content-Type:text/html;charset=utf-8");
//------------------------原型模式测试代码------------------
require_once "./Prototype/Prototype.php";
 
$plane1=new Plane();
$plane1->color="Blue";
 
$plane2=$plane1->cloned();
 
$plane1->Fly();
$plane2->Fly();
 
echo "plane1的颜色为:{$plane1->color}<br/>";
echo "plane2的颜色为:{$plane2->color}<br/>";

总结:原型模式其实就是克隆模式,如果一个对象创建过程很麻烦然后经常需要创建,可以使用原型模式。之前的微软系统就是使用了这个模式,在每台电脑中安装一样的系统赚钱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值