


Advanced object-oriented design patterns in PHP: Mediator pattern usage examples
What is the intermediary pattern?
The mediator pattern is used to develop an object that can transmit or mediate modifications to a collection of similar objects without directly interacting with each other. Generally, when dealing with uncoupled objects with similar properties that need to be kept synchronized, the best approach is the mediator pattern. A design pattern that is not particularly commonly used in PHP.
Mode motivation:
1. In the design scheme where users chat directly with users, there is a strong correlation between user objects, which will cause the system to appear as follows Problem:
The system structure is complex: there are a large number of interrelationships and calls between objects. If one object changes, all other objects associated with the object need to be tracked and processed appropriately.
2. Poor object reusability: Since an object has a strong relationship with other objects, without the support of other objects, it is difficult for an object to be reused by another system or module. These objects behave more like An indivisible whole with confusing responsibilities.
3. System scalability is low: adding a new object requires adding references to the original related objects, and adding new reference relationships also requires adjusting the original objects. The system coupling is very high, and object operations are very inflexible. , poor scalability.
4. In the object-oriented software design and development process, according to the "single responsibility principle", we should try to refine the object so that it is only responsible for or presents a single responsibility.
5. For a module, it may be composed of many objects, and there may be mutual references between these objects. In order to reduce the complex reference relationship between objects and make it a loosely coupled system, We need to use the mediator pattern, and this is the pattern motivation of the mediator pattern.
UML
This UML diagram illustrates a class design using the mediator design pattern
The following is Explanation of the above picture:
1. There are two similar classes in the picture: MyObjectA and MyObjectB. The appearance of both classes is the same. Their difference may be the identifier represented by the private variable identifier. Furthermore, all functions are similar.
2. During object creation, the instance of MyObjectMediator is stored internally. Subsequently, if a change is requested for an object by calling the public method cahngeIdentifier(), the parameter newID can be applied to the object by updating the private identifier string. Next, call the protected method notifyMediator() to apply mediation to other objects.
3.MyObjectMediator is the center of a series of objects. These objects are stored in the array MyObjectsToMediate. MyObjectsToMediate will execute the myObjectChanged() method when it receives the notification, which is responsible for parsing the array MyObjectsToMediate and applying the specified changes to all other objects.
Use an intermediary object to encapsulate a series of object interactions so that each object does not need to explicitly reference each other, thereby loosening the coupling, and the interaction between them can be changed independently
<?php /** * 中介者模式 * * 用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互 */ abstract class Mediator { abstract public function send($message,$colleague); } abstract class Colleague { private $_mediator = null; public function Colleague($mediator) { $this->_mediator = $mediator; } public function send($message) { $this->_mediator->send($message,$this); } abstract public function notify($message); } class ConcreteMediator extends Mediator { private $_colleague1 = null; private $_colleague2 = null; public function send($message,$colleague) { if($colleague == $this->_colleague1) { $this->_colleague1->notify($message); } else { $this->_colleague2->notify($message); } } public function set($colleague1,$colleague2) { $this->_colleague1 = $colleague1; $this->_colleague2 = $colleague2; } } class Colleague1 extends Colleague { public function notify($message) { echo "Colleague1 Message is :".$message."<br/>"; } } class Colleague2 extends Colleague { public function notify($message) { echo "Colleague2 Message is :".$message."<br/>"; } } // $objMediator = new ConcreteMediator(); $objC1 = new Colleague1($objMediator); $objC2 = new Colleague2($objMediator); $objMediator->set($objC1,$objC2); $objC1->send("to c2 from c1"); $objC2->send("to c1 from c2");
The above is the detailed content of Advanced object-oriented design patterns in PHP: Mediator pattern usage examples. For more information, please follow other related articles on the PHP Chinese website!

PHP is used to build dynamic websites, and its core functions include: 1. Generate dynamic content and generate web pages in real time by connecting with the database; 2. Process user interaction and form submissions, verify inputs and respond to operations; 3. Manage sessions and user authentication to provide a personalized experience; 4. Optimize performance and follow best practices to improve website efficiency and security.

PHP uses MySQLi and PDO extensions to interact in database operations and server-side logic processing, and processes server-side logic through functions such as session management. 1) Use MySQLi or PDO to connect to the database and execute SQL queries. 2) Handle HTTP requests and user status through session management and other functions. 3) Use transactions to ensure the atomicity of database operations. 4) Prevent SQL injection, use exception handling and closing connections for debugging. 5) Optimize performance through indexing and cache, write highly readable code and perform error handling.

Using preprocessing statements and PDO in PHP can effectively prevent SQL injection attacks. 1) Use PDO to connect to the database and set the error mode. 2) Create preprocessing statements through the prepare method and pass data using placeholders and execute methods. 3) Process query results and ensure the security and performance of the code.

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP makes it easy to create interactive web content. 1) Dynamically generate content by embedding HTML and display it in real time based on user input or database data. 2) Process form submission and generate dynamic output to ensure that htmlspecialchars is used to prevent XSS. 3) Use MySQL to create a user registration system, and use password_hash and preprocessing statements to enhance security. Mastering these techniques will improve the efficiency of web development.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.


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

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Chinese version
Chinese version, very easy to use

Atom editor mac version download
The most popular open source editor

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Zend Studio 13.0.1
Powerful PHP integrated development environment

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software