PHP设计模式--原型模式
发布时间:2022-08-02 15:34:15 所属栏目:PHP教程 来源:互联网
导读:定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式形象来说应该叫克隆模式,它主要是将对象克隆,把被克隆的对象称之为最初的原型。 使用场景:用于创建重复的对象,这种类型的设计模式属于创建型模式。 优点: 1、可以改变
|
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式形象来说应该叫克隆模式,它主要是将对象克隆,把被克隆的对象称之为最初的原型。 使用场景:用于创建重复的对象,这种类型的设计模式属于创建型模式。 优点: 1、可以改变值以指定新对象 2、可以改变结构以指定新对象 3、减少子类的构造 4、用类动态配置应用 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。 原型模式结构图: 捕获 php利用魔术方法__clone()方法克隆出对象。 1: 2: <?php 3: 4: abstract class Prototype 5: { 6: public $v = 'clone' . PHP_EOL; 7: 8: public function __construct() 9: { 10: echo 'create' . PHP_EOL; 11: } 12: 13: abstract public function __clone(); 14: } 15: 16: 17: class ConcretePrototype1 extends Prototype 18: { 19: public function __clone() 20: { 21: } 22: } 23: 24: class ConcretePrototype2 extends Prototype 25: { 26: public function __clone() 27: { 28: } 29: } 30: 31: 32: class Client 33: { 34: public function operation() 35: { 36: $p1 = new ConcretePrototype1(); 37: $p2 = clone $p1; 38: 39: echo $p1->v; 40: echo $p2->v; 41: } 42: } 43: 44: $c = new Client(); 45: $c->operation(); 46: 47: ?> 客户端使用clone来复制$p1,可以看到$p2也具有相同的$v属性。 (编辑:平凉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

