首页 > 编程 > PHP > 正文

PHP设计模式之原型设计模式原理与用法分析php技巧

2020-03-22 18:21:28
字体:
来源:转载
供稿:网友
这篇文章主要介绍了PHP设计模式之原型设计模式,简单描述了原型设计模式的概念、原理并结合实例形式分析了php原型设计模式的定义与使用方法,需要的朋友可以参考下

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

一、什么是原型设计模式

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

实例化对象的开销。

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

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

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

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

三、原型设计模式实例

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

 ?php* 原型设计模式* 以现代企业组织为例//部门抽象类abstract class IAcmePrototype protected $id; //员工ID号 protected $name; //员工名字 protected $dept; //员工部门 //克隆方法 abstract function __clone(); //员工部门设置方法 abstract function setDept($orgCode); //员工部门获取方法 public function getDept() return $this- dept; //员工ID号设置方法 public function setId($id) $this- id = $id; //员工ID号获取方法 public function getId() return $this-  //员工名字设置方法 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() . br /  echo $employee- getDept() . br /  echo $employee- getId() . br / $client = new Client();? 

运行结果:

Tess Smith
sales
ts101-1234
Jacob Jones
promotion
jj101-2234
Ricky Rodrigues
operations
rr203-5634
Olivia perez
digital artwork
op302-1278
John Jackson
programming
jj301-1454

您可能感兴趣的文章:

laravel中短信发送验证码的实现方法php实例

PHP receiveMail实现收邮件功能php实例

PHP分享图片的生成方法php技巧

以上就是PHP设计模式之原型设计模式原理与用法分析php技巧的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表