8.泡妞与设计模式(九) 观察者模式

8.泡妞与设计模式(九) 观察者模式

OBSERVER 观察者模式

观察者模式:观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。

想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦。

完整代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <Windows.h>
 4 
 5 HANDLE event[2] = { 0 };
 6 
 7 void fun1(void *p)
 8 {
 9     printf("玩游戏
");
10     WaitForSingleObject(event[0],INFINITE);
11     MessageBoxA(0, "工作中", "working", 0);
12 }
13 
14 void fun2(void *p)
15 {
16     printf("听音乐
");
17     WaitForSingleObject(event[1],INFINITE);
18     MessageBoxA(0, "工作中", "working", 0);
19 }
20 
21 void look(void *p)
22 {
23     Sleep(3000);
24     printf("老板来了
");
25     for (int i = 0; i < 2; i++)
26     {
27         SetEvent(event[i]);
28     }
29 }
30 
31 void main()
32 {
33     event[0] = CreateEvent(NULL, FALSE, FALSE, "1");
34     event[1] = CreateEvent(NULL, FALSE, FALSE, "2");
35     _beginthread(fun1, 0, NULL);
36     _beginthread(fun2, 0, NULL);
37     _beginthread(look, 0, NULL);
38     Sleep(100000);
39 }