一、创建型模式
1. 单例模式 (Singleton)
用途:确保一个类只有一个实例,并提供全局访问点
优点:节省内存,避免重复创建
缺点:全局状态,可能隐藏依赖关系
适用场景:配置管理、日志记录、数据库连接池
// 单例模式示例
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int config_value;
} ConfigManager;
static ConfigManager* instance = NULL;
ConfigManager* get_config_instance() {
if (instance == NULL) {
instance = (ConfigManager*)malloc(sizeof(ConfigManager));
instance->config_value = 100; // 默认值
}
return instance;
}
void destroy_config_instance() {
if (instance != NULL) {
free(instance);
instance = NULL;
}
}
// 使用示例
int main() {
ConfigManager* config1 = get_config_instance();
ConfigManager* config2 = get_config_instance();
printf("Config value: %d\n", config1->config_value);
printf("Same instance? %s\n", (config1 == config2) ? "Yes" : "No");
destroy_config_instance();
return 0;
}
2. 工厂方法模式 (Factory Method)
用途:创建对象但不指定具体类
优点:解耦客户端和具体产品
缺点:增加代码复杂度
适用场景:需要创建多种类似对象
// 工厂方法模式示例
#include <stdio.h>
#include <stdlib.h>
// 抽象产品
typedef struct {
void (*draw)(void);
} Shape;
// 具体产品1
void draw_circle() {
printf("Drawing Circle\n");
}
// 具体产品2
void draw_rectangle() {
printf("Drawing Rectangle\n");
}
// 工厂函数
Shape* create_shape(const char* type) {

最低0.47元/天 解锁文章
1745

被折叠的 条评论
为什么被折叠?



