浅谈PHP设计模式的原型模式

yizhihongxing

简介:

原型模式,属于创建型模式的一种。
主要针对对象进行克隆,把被克隆的对象称之为原型,原型模式称之为克隆模式也许更为贴切。
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

适用场景:

  1. 实例化对象的资源开销过大时可直接克隆。
  2. 需要循环创建大量对象,此时用克隆也是一个挺不错的选择。

优点:

  1. 高性能:如果创建对象的过程复杂,或者消耗大量资源,那么直接克隆就可以高性能的简化这一流程。
  2. 实现简单,某些场景下,相比于实例化对象的各种前置操作,而克隆一个关键字就能搞定。

缺点:

克隆出来的对象与原型对象不是一个,可能在某些业务场景上,可能会受影响

代码:

//抽象出来一个操作系统的类
abstract class OS {
    public $os;
    //setOS可以理解为安装操作系统
    public function installOS($os) {
        $this->os = $os;
    }

    //runOS可以理解为运行操作系统
    public function runOS() {
        return $this->os . PHP_EOL;
    }

    //__clone方法是原型模式中需要有的,尽管可能用不上
    abstract function __clone();
}


class Windows extends OS{
    public function __clone() {}
}


class Linux extends OS{
    public function __clone() {}
}


//调用端============================================
//伟大的工程师们开发好了两套操作系统
$windows = new Windows();
$linux   = new Linux();

//把它们克隆到光盘上,分别给3个用户安装。这样就不用在从零开发操作系统了,直接复制开销极小,然后把它们运行起来。
for($i = 0; $i < 3; $i ++) {
    $new_windows = clone $windows;
    $new_windows->installOS('windows');
    echo $new_windows->runOS();
}


//把它们克隆到光盘上,分别给2个用户安装。这样就不用在从零开发操作系统了,直接复制开销极小,然后把它们运行起来。
for($j = 0; $j < 2; $j ++) {
    $new_linux = clone $linux;
    $new_linux->installOS('linux');
    echo $new_linux->runOS();
}

原文链接:https://www.cnblogs.com/phpphp/p/16877921.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈PHP设计模式的原型模式 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • php实现的Curl封装类Curl.class.php用法实例分析

    首先我们来介绍一下“php实现的Curl封装类Curl.class.php”的用法及其分析攻略。 1. 什么是Curl? Curl是一个在很多操作系统下都可以实现数据传输的命令行工具,而在php中,可以使用Curl库来进行http数据传输,比如获取远程网页内容、上传图片、发送post/get请求等等。 2. 什么是Curl.class.php Curl.cl…

    PHP 2023年5月26日
    00
  • java分布式基于RestTemplate的使用方法

    下面是我为您提供的“Java分布式基于RestTemplate的使用方法”的完整攻略: 1. 什么是RestTemplate? RestTemplate是Spring框架提供的一个用于访问Rest服务的客户端,它通过简单的RESTful API从远程HTTP资源中提取数据。在使用RestTemplate之前,需要为应用程序提供Restful服务的API,其中…

    PHP 2023年5月27日
    00
  • 微信怎么发语音红包 微信语音红包小程序图文使用教程

    微信怎么发语音红包 微信语音红包小程序图文使用教程 前言 微信语音红包是微信在红包功能基础上推出的一项新功能,旨在让用户在传递节日祝福的同时,更加便利地赠送红包。本文将详细讲解微信语音红包的使用方法和操作流程,供大家参考。 步骤一:打开红包小程序 微信语音红包可以通过微信红包小程序进行发送和收取。首先,我们需要在微信中搜索“微信红包小程序”,并打开该小程序。…

    PHP 2023年5月23日
    00
  • php使用substr()和strpos()联合查找字符串中某一特定字符的方法

    当我们需要在一个较大的字符串中查找某一特定字符时,PHP提供了两个非常有用的函数:substr()和strpos()。这两个函数可以联合使用来查找字符串中特定字符的位置并截取所需部分。以下是具体的攻略: 1. substr()函数简介 substr()函数可以截取一个字符串的一部分,其语法如下: substr(string $string, int $sta…

    PHP 2023年5月26日
    00
  • php基础教程

    PHP基础教程完整攻略 PHP是一种广泛使用的服务器端脚本语言,可以创建动态的网页内容、发送和接收Cookie等。本教程将介绍PHP的基础概念,如语法、变量、运算符和控制结构等。 环境要求和安装 为了开始学习PHP,您需要一个运行PHP代码的web服务器,可以选择从下面的网址下载并安装: WAMP MAMP XAMPP 其中,XAMPP是最流行的,它支持Wi…

    PHP 2023年5月23日
    00
  • PHP explode()函数的几个应用和implode()函数有什么区别

    接下来我会详细讲解“PHP explode()函数的几个应用和implode()函数有什么区别”的完整攻略。 1. PHP explode()函数的应用 1.1 将字符串按照指定的分隔符拆分成数组 explode()函数是PHP内置函数,用于将一个字符串按照指定的分隔符拆分成数组。它的语法如下: array explode(string $delimiter…

    PHP 2023年5月26日
    00
  • PHP实现的超长文本分页显示功能示例

    下面我就为你详细讲解“PHP实现的超长文本分页显示功能示例”的完整攻略。 确定需求 首先需要明确需求,即我们希望实现一个功能,能够将超长的文本内容进行分页显示,同时支持定制分页大小。在网站开发中,这是一个非常常见的需求,特别是在文章或者新闻列表展示中。 编写代码 第一步:获取文本内容 我们需要从数据库或者文本文件中获取需要显示的文本内容,假设我们已经完成了文…

    PHP 2023年5月26日
    00
  • php生成html文件方法总结

    PHP生成HTML文件方法总结 本文将介绍如何使用PHP生成HTML文件的方法。PHP作为一种通用的脚本语言,可以方便地生成HTML文件。 方法一:使用文件读写 PHP提供了文件读写功能,我们可以使用它来生成HTML文件。下面是一个示例代码: <?php $html = ‘<html><head><title>My …

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部