PHP观察者模式原理与简单实现方法示例

2025-05-29 0 36

本文实例讲述了PHP观察者模式原理与简单实现方法。分享给大家供大家参考,具体如下:

当一个对象状态发生改变后,会影响到其他几个对象的改变,这时候可以用观察者模式。像wordpress这样的应用程序中,它容外部开发组开发插件,比如用户授权的博客统计插件、积分插件,这时候可以应用观察者模式,先注册这些插件,当用户发布一篇博文后,就回自动通知相应的插件更新。

观察者模式符合接口隔离原则,实现了对象之间的松散耦合。

观察者模式UML图:

PHP观察者模式原理与简单实现方法示例

php SPL中已经提供SplSubject和SqlOberver接口

?

1

2

3

4

5

6

7

8

9

10
interface SplSubject

{

function attach(SplObserver $observer);

function detach(SplObserver $observer);

function notify();

}

interface SqlObserver

{

function update(SplSubject $subject);

}

下面具体实现上面例子

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59
class Subject implements SplSubject

{

private $observers;

public function attach(SplObserver $observer)

{

if (!in_array($observer, $this->observers)) {

$this->observers[] = $observer;

}

}

public function detach(SplObserver $observer)

{

if (false != ($index = array_search($observer, $this->observers))) {

unset($this->observers[$index]);

}

}

public function post()

{

//post相关code

$this->notify();

}

private function notify()

{

foreach ($this->observers as $observer) {

$observer->update($this);

}

}

public function setCount($count)

{

echo "数据量加" . $count;

}

public function setIntegral($integral)

{

echo "积分量加" . $integral;

}

}

class Observer1 implements SplObserver

{

public function update($subject)

{

$subject-> setCount(1);

}

}

class Observer2 implements SplObserver

{

public function update($subject)

{

$subject-> setIntegral(10);

}

}

class Client

{

public function test()

{

$subject = new Subject();

$subject->attach(new Observer1());

$subject->attach(new Observer2());

$subject->post();//输出:数据量加1 积分量加10

}

}

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

原文链接:http://www.cnblogs.com/LoveJulin/p/5139073.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP观察者模式原理与简单实现方法示例 https://www.kuaiidc.com/93978.html

相关文章

发表评论
暂无评论