PHP设计模式—原型模式
发布时间:2020-12-13 21:24:20 所属栏目:PHP教程 来源:网络整理
导读:定义: 原型模式(Prototype): 用原型实例指定创建对象的种类,并且通过 clone 这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。 目的是使用 clone 对象来减少 new 对象的开销。 ? 原型 clon
定义:原型模式(Prototype):用原型实例指定创建对象的种类,并且通过 clone 这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。目的是使用 clone 对象来减少 new 对象的开销。 ? 原型 clone 有浅复制和深复制: ? 代码实例:class Sea { public $name; public function setName() { $this->name = ; } } /* * 浅复制 */ ShallowCopy { private $seafunction setSea($this->sea = ; } function getSeaName() { return $this->sea->name; } } * 深复制 DeepCopy { name; } __clone() { // TODO: Implement __clone() method. // 确保克隆出的对象持有 self::$sea 的一个副本 // 而不是一个指向它的引用 $this->sea = clone $this->sea; } } 调用: 调用 // 浅复制 $sea = new Sea(); $sea->setName('地球'); $shallowCopy = ShallowCopy(); $shallowCopy->setSea(); echo $shallowCopy->getSeaName() . "<br>"; $cloneSea = $shallowCopy; $cloneSea->getSeaName() . "<br>"$sea->setName('火星'; echo "---------------------------------" . "<br>" 深复制 $deepCopy = DeepCopy(); $deepCopy->setSea($deepCopy->getSeaName() . "<br>"$deepCopy$cloneSea->getSeaName() . "<br>"; 结果: 地球 地球 火星 火星 --------------------------------- 地球 地球 火星 地球 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |