We may not be so familiar with the observer pattern. It is an event system, which means that this pattern allows a class to observe the state of another class. When the state of the observed class changes, When, the observation class can receive notifications and take corresponding actions; the observer pattern provides another way to avoid tight coupling between components; so let’s discuss what the observer pattern is in this article!
Related recommendations: What is the factory pattern and factory method pattern in PHP?
Observer:
It is an event system, which means that this pattern allows a class to observe the state of another class when When the state of the observed class changes, the observing class can receive notifications and take corresponding actions; the observer pattern provides another way to avoid tight coupling between components;
We still use code For example, we create a new file, then define a class, and then write a member attribute in the class, which is an array to store observers, and then we define a method, which is used to store observers and Adding an observer allows the observer to be notified and make a certain response when the observed behavior is performed. The code is as an example:
<?php class Man { //用来存放观察者 protected $observers = []; //添加观察者方法 function addObserver($observer) { $this->observers[]=$observer; } //花钱方法 function buy() { //当被观察者做出这个行为的时候,让观察者得到通并且做出一-定的反应 foreach ($this->observers as $girl) { $girl->pome(); } } } class GirlFriend { function pome() { echo'我只明白一件事,爱一个人,是那么痛苦<br />'; } } //创建对象 $xiaoming = new Man(); $xiaohua =new GirlFriend(); $xiaoli = new GirlFriend(); //添加观察者 $xiaoming->addObserver( $xiaohua); $xiaoming->addObserver($xiaoli); $xiaoming->buy();
The running results are as follows:
If there is a method to add an observer, then there is a method to delete an observer, so we also need to add a method to delete an observer,
function delObserver($observer) { //查找对应值在数组中的键 $key = array_search($observer,$this->observers); //根据键删除值,并且数组重新索引 array_splice($this->observers, $key, 1); } }
//Delete
$xiaoming->delObserver( $xiaohua);
The code is as follows:
Recommended learning: "PHP Video Tutorial"
The above is the detailed content of What is the observer pattern in PHP? How to use it?. For more information, please follow other related articles on the PHP Chinese website!