设计模式初探 行为模式 观察者模式 c语言 版本实现
来源:互联网 发布:触摸屏软件开发 delphi 编辑:程序博客网 时间:2024/04/24 20:30
上午简单的学习了观察者模式,首先想到的是群邮件和微博加粉丝。于是写了个凤姐与粉丝的小程序。
我对设计模式是初次学习,理解可能并不准确,只能按照自己的理解去用程序模拟设计模式,希望理解的与其真正含义不要相差太远为好。
/**设计模式 行为模式 观察者模式 凤姐与粉丝 *2013年7月28 * */#include <stdio.h>#include <stdlib.h>struct Fans { struct Fengjie* fengjie; void ( *update) (); //粉丝获得凤姐的新状态,被动获得 void ( *joinfans)(struct Fans fans); //粉丝有权选择成为凤姐粉丝 void ( *quitfans)(); //粉丝有权选择退出凤姐粉丝圈};struct Fengjie { int fansnum; struct Fans fanslist[100]; //负责通知的粉丝的数量,最多100个粉丝 void ( *notify) (struct Fengjie* fengjie); //由凤姐发出更新通知 void ( *addfans)(struct Fengjie* fengjie, struct Fans fans); //凤姐这边也可以增加删除粉丝 // void ( *)delfans)(); //to be done};void fan1update(){ //不同粉丝收到新信息后有不同行为 printf ("fan1 got new news! Unbelievable,Fengjie weight %d now!\n",rand()%10 +50);}void fan2update(){ //不同粉丝收到新信息后有不同行为 printf ("fan2 got new news! Fengjie's new weight is %d , oh my god.\n",rand()%10 +50);}void joinfans(struct Fans fans) { fans.fengjie->addfans(fans.fengjie, fans); //粉丝这边直接调用凤姐的函数来把该粉丝加入粉丝圈}void notify (struct Fengjie* fengjie){ int i; for (i = 0; i < fengjie->fansnum; i++) fengjie->fanslist[i].update();}void addfans (struct Fengjie* fengjie, struct Fans fans) { fengjie->fanslist[fengjie->fansnum] = fans; fengjie->fansnum++;}int main (void) { srand((unsigned) time(0)); struct Fengjie fengjie; fengjie.notify = notify, fengjie.addfans = addfans, fengjie.fansnum = 0; struct Fans fan1, fan2; fan1.fengjie = &fengjie, fan1.joinfans = joinfans, fan1.update = fan1update; fan2.fengjie = &fengjie, fan2.joinfans = joinfans, fan2.update = fan2update; fan1.joinfans (fan1); fan2.joinfans (fan2); fengjie.notify (&fengjie);}
另外可以根据不同的粉丝写相应的update响应,这又让我想到了网上说的控件菜单等对明令的响应。
观察者只要发现目标有什么风吹草动就会采取行动,这时该称为监视者。
- 设计模式初探 行为模式 观察者模式 c语言 版本实现
- 设计模式 行为模式 命令模式 c语言 版本实现
- 设计模式 行为模式 中介者模式 c语言 版本实现
- 设计模式-行为-观察者
- 设计模式初探-观察者模式
- 设计模式初探-观察者模式
- 设计模式--观察者模式(行为类模式)
- 设计模式-行为模式之观察者模式
- 设计模式 - 行为型模式 - 观察者模式
- 设计模式,行为模式(观察者模式)
- 设计模式 行为模式之观察者模式
- 设计模式->行为型模式->观察者模式
- 设计模式---行为类型---观察者
- c版本观察者模式
- 行为模式-观察者模式
- 行为模式-观察者模式
- 观察者模式 - 行为模式
- 行为模式:观察者模式
- 在MAC系统中编译ANDROID源码与模拟器内核GoldFish
- mahout 源码解析之聚类--聚类迭代模型
- STM32 USB设计
- 从软件的角度漫谈 太原公共自行车刷卡原理
- 上传STM32的USB上位机(VC++源码),动态库(VC++源码),STM32端原代码,驱动程序,全套源码
- 设计模式初探 行为模式 观察者模式 c语言 版本实现
- NOIP2008 双栈排序
- Qt中MySQL数据库操作
- 使用MachOView辅助破解AppStore应用
- NSArray使用方法,数组遍历的几种方法,迭代器的用法
- linux ubuntu apt-get 更换源
- 如何修改STM32的USB例程为自己所用
- SGU 162 - Pyramids(四面体体积公式)
- NSMutableString可变字符串的几种用法