当前位置: 首页 > wzjs >正文

平台网站建设步骤建站如何赚钱

平台网站建设步骤,建站如何赚钱,wordpress 找不到文件路径,wordpress 漏洞观察者模式主要是为了实现一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。下面使用C语言实现了一个具体的应用示例,有需要的可以参考…

观察者模式主要是为了实现一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。下面使用C语言实现了一个具体的应用示例,有需要的可以参考下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>// 观察者的结构定义
typedef struct {void (*add)(void *data);void (*update)(void *data);void (*delete)(void *data);
} observer_t;// 观察者链表节点定义
typedef struct _observer_list_t {observer_t *observer;struct _observer_list_t *next;
} observer_list_t;// 被观察者定义
typedef struct _subject_t {void *data;observer_list_t *observer; // 观察者链表
} subject_t;// 初始化观察者的更新函数
void init_observer_update(observer_t *observer, void (*update)(void *data)) {observer->update = update;
}// 初始化观察者的添加函数
void init_observer_add(observer_t *observer, void (*add)(void *data)) {observer->add = add;
}// 初始化观察者的删除函数
void init_observer_delete(observer_t *observer, void (*delete)(void *data)) {observer->delete = delete;
}// 加入观察者队列
bool attach_observer(subject_t *subject, observer_t *observer) {observer_list_t *node = (observer_list_t *)malloc(sizeof(observer_list_t));if (!node) return false; // 内存分配失败node->observer = observer;node->next = subject->observer;subject->observer = node;return true;
}// 从观察者队列删除
bool detach_observer(subject_t *subject, observer_t *observer) {observer_list_t *node = subject->observer;observer_list_t *prev = NULL;while (node) {if (node->observer == observer) {if (prev) {prev->next = node->next;} else {subject->observer = node->next;}free(node);return true;}prev = node;node = node->next;}return false; // 未找到观察者
}// 修改被观察数据
void set_observer_data(subject_t *subject, void *value) {subject->data = value;
}// 通知观察者更新
void notify_observer_update(subject_t *subject) {observer_list_t *node = subject->observer;int count = 0;for (; node; node = node->next) {printf("Notify observer update %d. Data: %s\n", count, (char *)subject->data);count++;if (node->observer->update) {node->observer->update(subject->data);}}
}// 通知观察者添加(这个在实际应用中可能不常见,通常只通知更新或删除)
void notify_observer_add(subject_t *subject) {// ...(类似notify_observer_update,但调用add函数)// 这里为了简洁省略,实际应用中根据需要实现
}// 通知观察者删除(同样,这个在标准观察者模式中不常见)
void notify_observer_delete(subject_t *subject) {// ...(类似notify_observer_update,但调用delete函数)// 这里为了简洁省略,实际应用中根据需要实现
}// 初始化主题对象
void init_subject(subject_t *subject) {memset(subject, 0, sizeof(subject_t));
}// 释放主题对象及其所有观察者
void free_subject(subject_t *subject) {observer_list_t *node = subject->observer;while (node) {observer_list_t *temp = node;node = node->next;free(temp);}// 注意:这里没有释放subject->data,因为不清楚其分配方式。在实际应用中需要适当处理。
}

使用示例

// 假设我们有一个简单的字符串观察者,它会打印接收到的字符串
void observer_update(void *data) {printf("Observer received update: %s\n", (char *)data);
}int main() {// 创建一个主题对象subject_t subject;init_subject(&subject);// 创建一个观察者并初始化其更新函数observer_t observer;init_observer_update(&observer, observer_update);// 将观察者附加到主题对象attach_observer(&subject, &observer);// 设置被观察数据并通知观察者set_observer_data(&subject, "Hello, Observer!");notify_observer_update(&subject);// 从主题对象中删除观察者detach_observer(&subject, &observer);// 释放主题对象(在实际应用中,通常在程序结束时进行)free_subject(&subject);return 0;
}

执行结果

在这里插入图片描述


文章转载自:

http://V4cUZh8d.hmnhp.cn
http://O9WzLsDM.hmnhp.cn
http://du93feXz.hmnhp.cn
http://c40PRvRm.hmnhp.cn
http://R1V2Jgpu.hmnhp.cn
http://YuXmyZbs.hmnhp.cn
http://w8q6L6T5.hmnhp.cn
http://1QwhvVS1.hmnhp.cn
http://96opZbFc.hmnhp.cn
http://ZQYqZ9Ga.hmnhp.cn
http://SPv9LTWa.hmnhp.cn
http://1wXNBH9A.hmnhp.cn
http://AjYg4waF.hmnhp.cn
http://rvruJNxL.hmnhp.cn
http://ZMTYLk0F.hmnhp.cn
http://u23JzKux.hmnhp.cn
http://c0oqdE4H.hmnhp.cn
http://oGNd2VyO.hmnhp.cn
http://hMkvQajp.hmnhp.cn
http://o6dfPROH.hmnhp.cn
http://IfUpKxDN.hmnhp.cn
http://klTWO7oP.hmnhp.cn
http://8CFRiO10.hmnhp.cn
http://7oX0na8K.hmnhp.cn
http://TfJDeLBW.hmnhp.cn
http://cR3iNXXh.hmnhp.cn
http://PAYP867v.hmnhp.cn
http://j1OxTcs5.hmnhp.cn
http://qwt9iO2f.hmnhp.cn
http://tf3p69Ww.hmnhp.cn
http://www.dtcms.com/wzjs/730026.html

相关文章:

  • wordpress官方的三个主题好排名精准网站seo诊断报告
  • 青岛网站建设好不好首饰设计网站大全
  • 旅游的网站怎么做的深圳网站设计公司wx成都柚米科技15
  • 新吴区推荐做网站公司著名外国网站
  • 外包网站建设wordpress 资源下载主题
  • 好的互联网资讯网站重庆电子商务网站建设
  • .net网站模板现代网络编程技术
  • 苏州能做网站外语网站制作
  • 山东平台网站建设方案合肥生态建设职业培训学校网站
  • 国外有哪些优秀的网站如何做网站清风制作
  • 做汽车精品的网站武侯区建设局网站
  • 做视频网站了几百万网站整体框架
  • 通化市建设局网站怎么接广告推广
  • 苏州高新区网站建设晋城市城乡建设局网站
  • 怎样做天猫网站视频深圳制作网站建设推广
  • 谷歌没收录网站主页 301重定向什么是指数基金
  • 紧固件做网站有效果吗网站域名 评估作价
  • 服装网站建设竞争对手调查分析广广东网站建设
  • 南和网站建设爱星光(istar)高端网站建设
  • 查公司的国家网站有哪些怀化网站优匿
  • 网站建设与运营的公司wordpress底部版权插件
  • 酒店网站建设范文为什么点不开网站
  • 鄂尔多斯市住房和城乡建设厅网站有没有做长图的网站
  • 深圳市潮流网络是不是外包站长工具的使用seo综合查询运营
  • 网站建设英语翻译wordpress 免费吗
  • 网站建设教程模板wordpress 新闻列表
  • 机构网站建设番禺软件公司
  • 珠海建设银行官方网站门头沟手机网站建设
  • 双鱼儿 网站建设北京网站开发工程师
  • cpa推广做网站音乐网站制作策划书