【C语言】软件开发中常用的设计模式

一、创建型模式

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) {
   
   
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值