php设计模式之观察者模式定义与用法经典示例

2025-05-27 0 21

本文实例讲述了php设计模式观察者模式定义与用法。分享给大家供大家参考,具体如下:

?

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

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77
<?php

/**

* @desc 利用观察者模式,实现不同用户进入显示不同的内容

* 1.主题

* 2.观察者接口

* 3.观察者

* ***/

interface Observer{

//添加观察者对象

public function attach($observer);

//删除观察者对象

public function detach($observer);

//执行观察者需要执行的方法

public function doIt();

}

class User implements Observer{

public $obj = [];

/*

*@desc 传递的对象不在存储的obj对象中则将对象存储到obj中

*/

public function attach($observer){

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

$this->obj[] = $observer;

}

}

/**

* @desc 取消观察者观察

* **/

public function detach($observer){

$key = array_search($observer, $this->obj);

if($key){

unset($this->obj[$key]);

}

}

/***

* @desc 获取所有被观察者的对象,执行观察

* **/

public function doIt(){

if(!empty($this->obj)){

foreach ($this->obj as $v){

$v->active();

}

}

}

}

/**

* @desc 观察者接口

* **/

interface obsUser{

public function active();

}

/*

* @实现零售店用户实现方法类

* **/

class storeUser implements obsUser{

public function active(){

echo "我是零售店用户\\n";

}

}

/**

* @desc 实现经销商用户方法类

* **/

class supplierUser implements obsUser{

public function active(){

echo "我是经销商用户\\n";

}

}

/*

* 实例化观察者接口类

* **/

$user = new User();

//添加门店用户类到观察者对象

$user->attach(new storeUser());

//添加经销商用户类到观察者对象

$user->attach(new supplierUser());

//监控观察者动作并输出结果

$user->doIt();

运行结果:

我是零售店用户
我是经销商用户

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

原文链接:https://www.cnblogs.com/lisqiong/p/6574984.html

收藏 (0) 打赏

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

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

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

快网idc优惠网 建站教程 php设计模式之观察者模式定义与用法经典示例 https://www.kuaiidc.com/71498.html

相关文章

发表评论
暂无评论