PHP原型模式示例解析如何实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1855个文字,预计阅读时间需要8分钟。
前言+原型模式其实是一种更形象的来描述的说法。它主要的行为是对象进行克隆,但同时又把被克隆的对象称为最初的原型。于是,这个模式就这样被命名了。说真的,从使用方式来看,克隆模式这个名称更直接。
前言
原型模式其实更形象的来说应该叫克隆模式。它主要的行为是对对象进行克隆,但是又把被克隆的对象称之为最初的原型,于是,这个模式就这样被命名了。说真的,从使用方式来看真的感觉叫克隆模式更贴切一些。
Gof类图及解释
GoF定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
GoF类图
代码实现
abstract class Prototype { public $v = 'clone' . PHP_EOL; public function __construct() { echo 'create' . PHP_EOL; } abstract public function __clone(); }
首先我们通过模拟的方式定义了一个原型,这里主要是模拟了__clone()这个方法。其实这是PHP自带的一个魔术方法,根本是不需要我们去进行定义的,只需要在原型类中进行实现就可以了。当外部使用clone关键字进行对象克隆时,直接就会进入这个魔术方法中。在这个魔术方法里面我们可以对属性进行处理,特别是针对引用属性进行一些独特的处理。在这个例子中,我们只使用了一个值类型的变量。无法体现出引用类型的问题,我们将在后面的实例中演示对引用类型变量的处理。
本文共计1855个文字,预计阅读时间需要8分钟。
前言+原型模式其实是一种更形象的来描述的说法。它主要的行为是对象进行克隆,但同时又把被克隆的对象称为最初的原型。于是,这个模式就这样被命名了。说真的,从使用方式来看,克隆模式这个名称更直接。
前言
原型模式其实更形象的来说应该叫克隆模式。它主要的行为是对对象进行克隆,但是又把被克隆的对象称之为最初的原型,于是,这个模式就这样被命名了。说真的,从使用方式来看真的感觉叫克隆模式更贴切一些。
Gof类图及解释
GoF定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
GoF类图
代码实现
abstract class Prototype { public $v = 'clone' . PHP_EOL; public function __construct() { echo 'create' . PHP_EOL; } abstract public function __clone(); }
首先我们通过模拟的方式定义了一个原型,这里主要是模拟了__clone()这个方法。其实这是PHP自带的一个魔术方法,根本是不需要我们去进行定义的,只需要在原型类中进行实现就可以了。当外部使用clone关键字进行对象克隆时,直接就会进入这个魔术方法中。在这个魔术方法里面我们可以对属性进行处理,特别是针对引用属性进行一些独特的处理。在这个例子中,我们只使用了一个值类型的变量。无法体现出引用类型的问题,我们将在后面的实例中演示对引用类型变量的处理。

