美文网首页
PHP设计模式:原型模式

PHP设计模式:原型模式

作者: Zed_790e | 来源:发表于2019-06-19 17:19 被阅读0次

前言

原型模式用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。

代码

//定义一个巨大的文本类(假设创建它的时候内存消耗很大QWQ)
class Company
{
    private $company;

    public function setName($name)
    {
        $this->company = $name;
    }

    public function getName()
    {
        return $this->company;
    }
}

//这个类主要用来做逻辑
class Archives
{
    private $name;
    private $sex;
    private $age;
    private $work;
    private $company;

    //构造函数加载一次那个巨大的类 (重点)
    function __construct()
    {
        $this->company = new Company();
    }

    public function setInfo($name, $sex, $age)
    {
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }

    public function setWork($company, $work)
    {
        $this->work = $work;
        $this->company->setName($company);
    }

    public function show()
    {
        echo $this->name . " " . $this->sex . " " . $this->age . "\n";
        echo $this->work . " " . $this->company->getName() . "\n";
    }

    // 对引用执行深复制(重点)
    function __clone()
    {
        $this->company = clone $this->company;
    }
}

$resume = new Archives("蛇精病俱乐部");
$resume->setInfo("张小帅", "男", 24);
$resume->setWork("WEB开发部", "PHP工程师");

$resume2 = clone $resume;
$resume2->setInfo("王明明", "男", 40);
$resume2->setWork("WEB开发部", "产品经理");

$resume3 = clone $resume2;
$resume3->setInfo("孙苦苦", "女", 18);
$resume3->setWork("WEB开发部", "程序员鼓励师");

$resume->show();
$resume2->show();
$resume3->show();

输出

image.png

总结

说白了原型模式就是克隆的一种玩法,不需要想象的太过于复杂。简单来说他就是克隆!

相关文章

  • PHP设计模式(六)-原型模式

    layout: posttitle: "PHP设计模式(六)-原型模式"date: 2016-06-07 10:2...

  • PHP完整实战23种设计模式

    前言 设计模式是面向对象的最佳实践 实战 PHP实战创建型模式 单例模式 工厂模式 抽象工厂模式 原型模式 建造者...

  • JavaJavascript基础进阶(十七)JS中常用的设计模式

    单利设计模式、构造原型设计模式、发布订阅设计模式、promise设计模式 单利模式 构造原型设计模式 最贴近OOP...

  • PHP 设计模式---原型模式

    原型模式(Prototype Pattern):与工厂模式类似,都是用来创建对象的。利用克隆来生成一个大对象,减少...

  • php设计模式——原型模式

    原型模式 概念理解:原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。适用于大对象的创建,...

  • PHP设计模式:原型模式

    前言 原型模式用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价...

  • PHP设计模式-原型模式

    适用性 原型设计模式创建对象的方式是复制和克隆初始对象或原型,这种方式比创建新实例更为有效。 UML MyOjec...

  • PHP 完整实战23种设计模式

    PHP实战创建型模式 单例模式 工厂模式 抽象工厂模式 原型模式 建造者模式 PHP实战结构型模式 桥接模式 享元...

  • Spring 准备内容

    准备内容 原型设计模式 PropotypeModle 原型模式也属于创造型设计模式,用原型实例指定创建对象的种类,...

  • 《PHP设计模式大全》系列分享专栏

    php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页 介绍php设计模式中的工厂模式...

网友评论

      本文标题:PHP设计模式:原型模式

      本文链接:https://www.haomeiwen.com/subject/auakqctx.html