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

网站制作多久能完成国际网站平台有哪些

网站制作多久能完成,国际网站平台有哪些,哈尔滨seo优化科技,WordPress显示插件C语言设计模式 尽管 C 语言并不直接支持面向对象编程,但通过结构体和函数指针的灵活运用,我们依然可以实现多种经典的设计模式。 1. 工厂模式 1.1 工厂方法的定义与实现 工厂模式通过统一的接口创建对象,客户端无需知道具体的创建逻辑。 代…

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.dinnco.com/news/15427.html

相关文章:

  • 彩票网站 模块网络营销环境宏观微观分析
  • 网站建设柒金手指花总14淘宝seo是指什么
  • vps主机访问网站怎么创建网站的快捷方式
  • 银川公司做网站2023新冠结束了吗
  • wordpress安装失败无法复制文件夹网站seo软件
  • 南宁手机平台网站建设品牌推广的渠道有哪些
  • 建造网站需要多少钱开网店
  • 门户网站开发难点阿里云域名注册万网
  • wordpress 爬取郑州seo推广优化
  • 开发网站需要多少人网站关键词优化费用
  • 国外html5做的音乐网站百度竞价排名费用
  • 做推广比较好的网站有哪些谷歌seo关键词优化
  • 网络营销网站建设流程今日最新消息
  • av做视频在线观看网站营销推广工作内容
  • 湖南省建设工程信息网站网站建设的公司
  • 大连科技网站制作百度收录查询入口
  • python做网站好吗seo服务运用什么技术
  • 石家庄网站建设电话seo入门讲解
  • 天涯网站建设路小学济南计算机培训机构哪个最好
  • 网站开发 报刊太原seo优化
  • 物流专线做网站最近10个新闻
  • 深圳网站建设服务类公司优缺点单个药品营销策划方案
  • 东莞樟木头哪里有做网站的十大免费推广平台
  • 做公司网站需要注意什么永久免费个人网站注册
  • 淘客必须做网站网络营销活动案例
  • 企业内部网站源码镇江网站制作公司
  • 域名备案成功怎么做网站网站手机版排名seo
  • 西安网站建设专家什么叫关键词举例
  • 莱芜企业网站建设公司电商网站建设价格
  • 广州网站设计工作室营销qq下载