PHP   发布时间:2019-11-10  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP设计模式之原型设计模式原理与用法分析大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了php设计模式之原型设计模式原理与用法。分享给大家供大家参,具体如下:

一、什么是原型设计模式

原型设计模式使用一种克隆技术来复制实例化的对象,新对象是通过复制原型实例创建的。原型设计模式的目的是通过使用克隆以减少

实例化对象的开销。

在原型设计模式中,Client类是不可缺少的一部分。

php有一个内置的克隆方法__clone()可以在设计模式中使用,但是不能直接访问,使用clone关键字即可。克隆不会启动构造函数。

二、什么时候使用原型设计模式

如果一个项目要求你创建某个原型对象的多个实例,就可以使用原型设计模式。

三、原型设计模式实例

这里以现代企业组织为例:

php;"> dept; } //员工ID号设置方法 public function setId($id) { $this->id = $id; } //员工ID号获取方法 public function getId() { return $this->id; } //员工名字设置方法 public function setName($Name) { $this->name = $name; } //员工名字获取方法 public function getName() { return $this->name; } } //市场部类 class MarkeTing extends IAcmePrototype { const UNIT = "MarkeTing"; //标识 //市场部门类别 private $SALEs = "SALEs"; private $promotion = "promotion"; private $strategic = "strategic plAnning"; //克隆函数 function __clone() { } //部门设置函数 public function setDept($orgCodE) { switch($orgCodE) { case 101: $this->dept = $this->SALEs; break; case 102: $this->dept = $this->promotion; break; case 103: $this->dept = $this->strategic; break; default: $this->dept = "Unrecognized MarkeTing"; } } } //管理部类 class Management extends IAcmePrototype { const UNIT = "Management"; private $research = "research"; private $plan = "plAnning"; private $operations = "operations"; function __clone() { } public function setDept($orgCodE) { switch($orgCodE) { case 201: $this->dept = $this->research; break; case 202: $this->dept = $this->plan; break; case 203: $this->dept = $this->operations; break; default: $this->dept = "Unrecognized MarkeTing"; } } } //工厂部类 class ENGIneering extends IAcmePrototype { const UNIT = "ENGIneering"; private $development = "progrAMMing"; private $design = "digital artwork"; private $sysAd = "system administration"; function __clone() { } public function setDept($orgCodE) { switch($orgCodE) { case 301: $this->dept = $this->development; break; case 302: $this->dept = $this->design; break; case 303: $this->dept = $this->sysAd; break; default: $this->dept = "Unrecognized MarkeTing"; } } } //客户类 class Client { private $market; //市场部类实例 private $manage; //管理部类实例 private $ENGIneer; //工厂部类实例 //构造函数 public function __construct() { $this->makeConProto(); //市场部类实例克隆 $Tess = clone $this->market; $this->setemployee($Tess,"Tess Smith",101,"ts101-1234"); $this->showemployee($Tess); $Jacob = clone $this->market; $this->setemployee($Jacob,"Jacob Jones",102,"jj101-2234"); $this->showemployee($Jacob); //管理部类实例克隆 $Ricky = clone $this->manage; $this->setemployee($Ricky,"Ricky Rodrigues",203,"rr203-5634"); $this->showemployee($Ricky); //工程部类实例克隆 $Olivia = clone $this->ENGIneer; $this->setemployee($Olivia,"Olivia perez",302,"op302-1278"); $this->showemployee($Olivia); $John = clone $this->ENGIneer; $this->setemployee($John,"John Jackson",301,"jj301-1454"); $this->showemployee($John); } //实例化部门对象 private function makeConProto() { $this->market = new MarkeTing(); $this->manage = new Management(); $this->ENGIneer = new ENGIneering(); } //员工信息设置方法 private function setemployee(IAcmePrototype $employee,$name,$dept,$id) { $employee->setName($Name); $employee->setDept($dept); $employee->setId($id); } //员工信息显示方法 private function showemployee(IAcmePrototype $employeE) { echo $employee->getName() . '
'; echo $employee->getDept() . '
'; echo $employee->getId() . '
'; } } $client = new Client(); ?>

运行结果:

更多关于php相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《php常见数据库操作技巧汇总》

希望本文所述对大家php程序设计有所帮助。

大佬总结

以上是大佬教程为你收集整理的PHP设计模式之原型设计模式原理与用法分析全部内容,希望文章能够帮你解决PHP设计模式之原型设计模式原理与用法分析所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:设计模式