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

网站策划报告怎么写有没有医学生做课件的网站

网站策划报告怎么写,有没有医学生做课件的网站,建设网站技术人员先进事迹,wordpress插件太多C语言设计模式 尽管 C 语言并不直接支持面向对象编程#xff0c;但通过结构体和函数指针的灵活运用#xff0c;我们依然可以实现多种经典的设计模式。 1. 工厂模式 1.1 工厂方法的定义与实现 工厂模式通过统一的接口创建对象#xff0c;客户端无需知道具体的创建逻辑。 代…C语言设计模式 尽管 C 语言并不直接支持面向对象编程但通过结构体和函数指针的灵活运用我们依然可以实现多种经典的设计模式。 1. 工厂模式 1.1 工厂方法的定义与实现 工厂模式通过统一的接口创建对象客户端无需知道具体的创建逻辑。 代码示例 #include stdio.h #include stdlib.h #include string.h// 抽象产品类型定义 typedef struct Product {void (*use)(struct Product*); // 指向具体产品使用方法的函数指针 } Product;// 具体产品A定义 typedef struct {Product base;char* name; } ProductA;// 产品A的使用方法实现 void useProductA(Product* base) {ProductA* self (ProductA*)base;printf(Using Product A: %s\n, self-name); }// 具体产品B定义 typedef struct {Product base;int version; } ProductB;// 产品B的使用方法实现 void useProductB(Product* base) {ProductB* self (ProductB*)base;printf(Using Product B: version %d\n, self-version); }// 工厂方法根据类型创建不同的产品 Product* createProduct(const char* type) {if (strcmp(type, A) 0) {ProductA* product malloc(sizeof(ProductA));product-base.use useProductA;product-name Example A;return (Product*)product;} else if (strcmp(type, B) 0) {ProductB* product malloc(sizeof(ProductB));product-base.use useProductB;product-version 1;return (Product*)product;}return NULL; }// 测试工厂模式 int main() {Product* p1 createProduct(A);Product* p2 createProduct(B);p1-use(p1);p2-use(p2);free(p1);free(p2);return 0; }1.2 适用场景 数据库连接根据需求创建不同类型的数据库连接对象。图形系统动态创建圆形、矩形等不同的图形对象。日志系统创建不同日志记录方式的对象如文件日志或控制台日志。 2. 策略模式 2.1 策略模式的实现 策略模式通过函数指针实现不同策略的切换。 代码示例 #include stdio.h #include stdlib.h// 策略类型定义 typedef struct {void (*execute)(void); // 指向策略实现的函数指针 } Strategy;// 策略A实现 void strategyA() {printf(Executing Strategy A\n); }// 策略B实现 void strategyB() {printf(Executing Strategy B\n); }// 测试策略模式 int main() {Strategy strategy;// 使用策略Astrategy.execute strategyA;strategy.execute();// 切换为策略Bstrategy.execute strategyB;strategy.execute();return 0; }2.2 适用场景 排序算法动态选择快速排序、归并排序等不同算法。支付系统支持支付宝、微信支付等多种支付方式切换。文件压缩选择不同的压缩算法如ZIP或RAR。 3. 观察者模式 3.1 观察者模式的实现 观察者模式实现一对多的通知机制。 代码示例 #include stdio.h #include stdlib.h// 观察者接口定义 typedef struct Observer {void (*update)(struct Observer*, const char* message); // 更新方法struct Observer* next; // 链表指针指向下一个观察者 } Observer;// 具体观察者定义 typedef struct {Observer base;char* name; } ConcreteObserver;// 具体观察者的更新方法实现 void observerUpdate(Observer* base, const char* message) {ConcreteObserver* self (ConcreteObserver*)base;printf(%s received: %s\n, self-name, message); }// 主题Subject定义 typedef struct {Observer* observers; // 链表头指针保存所有观察者 } Subject;// 添加观察者到主题 void addObserver(Subject* subject, Observer* observer) {observer-next subject-observers;subject-observers observer; }// 通知所有观察者 void notifyObservers(Subject* subject, const char* message) {Observer* current subject-observers;while (current) {current-update(current, message);current current-next;} }// 测试观察者模式 int main() {Subject subject { .observers NULL };// 创建两个观察者ConcreteObserver o1 { .base.update observerUpdate, .name Observer 1 };ConcreteObserver o2 { .base.update observerUpdate, .name Observer 2 };// 将观察者添加到主题中addObserver(subject, (Observer*)o1);addObserver(subject, (Observer*)o2);// 通知所有观察者notifyObservers(subject, Event happened);return 0; }3.2 适用场景 GUI事件按钮点击后通知多个事件监听器。实时数据监控股票价格变动后通知多个用户。发布-订阅系统如聊天室中用户订阅消息后实时接收。
http://www.w-s-a.com/news/714616/

相关文章:

  • 自己做的网站能上传吗网上做彩票网站排名
  • 教育培训网站模板下载自己做商务网站有什么利弊
  • 平面设计公司网站兰州室内设计公司排名
  • 个人工作室注册条件温州seo结算
  • 360免费建站系统中国建设银行官网站黄金部王毅
  • 罗源福州网站建设个体户可以网站备案吗
  • 网站开发 专有名词pc网站建设和推广
  • 上海部道网站 建设conoha wordpress
  • 手机测评做视频网站宝塔可以做二级域名网站么
  • 代理公司注册济南重庆seo优化效果好
  • 佛山市骏域网站建设专家徐州网站建设价格
  • 公司做网站多济南好的网站建设公司排名
  • 网站维护的方式有哪几种该网站在工信部的icp ip地址
  • 中小企业服务中心网站建设做考勤的网站
  • 大连网站建设报价wordpress实用功能
  • 学校网站建设自查报告电脑网站制作教程
  • 适合推广的网站世界搜索引擎公司排名
  • 合肥网站建设费用ppt在哪个软件制作
  • 湖南省住房和城乡建设厅门户网站网站建设课程性质
  • 如何设计公司网站公司网站空间要多大
  • 建筑公司网站排名5G网站建设要多少个
  • seo怎样新建网站弹簧东莞网站建设
  • 在线做爰直播网站石家庄房产
  • 建筑网站哪里找拓者设计吧首页
  • 广州网站的建设wordpress注册数学验证码
  • 装修平台自己做网站有几个黄页名录网站开发
  • php网站的安全优势平面设计师培训
  • 乐清市网站建设设计重庆沙坪坝区
  • 什么是seo站内优化开发网页的工具有哪些
  • 文化类网站是不是休闲娱乐类网站青州市建设局网站