PHP prototyping pattern use case analysis
This time I bring you PHP prototypeDesign patternUse case analysis, what are the Notes when using PHP prototype design pattern, the following is a practical case, let's take a look.
1. What is the prototype design pattern
The prototype design pattern uses a cloning technology to copy instantiated objects. New objects are created by copying prototype instances. The purpose of the prototyping design pattern is to reduce the
overhead of instantiating objects through the use of cloning.
In the prototype design pattern, the Client class is an indispensable part.
PHP has a built-in cloning methodclone()
It can be used in design mode, but it cannot be accessed directly. Just use the clone keyword. Cloning does not start the constructor.
2. When to use the prototype design pattern
If a project requires you to create multiple instances of a prototype object, you can use the prototype design pattern.
3. Examples of prototyping design pattern
Here is a modern enterprise organization as an example:
<?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->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() . '<br />'; echo $employee->getDept() . '<br />'; echo $employee->getId() . '<br />'; } } $client = new Client(); ?>
Running results:
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
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to php Other related articles on the Chinese website!
Recommended reading:
PHP cURL to obtain WeChat public account access_token step analysis
##PHP uses strace to locate and troubleshoot the fault location solve
The above is the detailed content of PHP prototyping pattern use case analysis. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
