C 语言中实现依赖反转(Dependency Inversion Principle,DIP)

1. 定义抽象接口

定义一个抽象的日志接口,高层模块通过该接口操作日志,而非直接依赖具体实现。

// Logger.h - 抽象接口定义
#ifndef LOGGER_H
#define LOGGER_H

// 日志级别枚举
typedef enum {
    LOG_INFO,
    LOG_ERROR
} LogLevel;

// 抽象日志接口结构体
typedef struct {
    void (*log)(void* self, LogLevel level, const char* message);
    void (*destroy)(void* self); // 销毁接口的虚函数
} ILogger;

#endif

2. 实现具体日志模块

2.1 控制台日志实现

// ConsoleLogger.c - 控制台日志实现
#include
#include "Logger.h"

// 控制台日志的私有数据
typedef struct {
    ILogger interface; // 必须包含接口结构体
    int instanceId;    // 示例私有成员
} ConsoleLogger;

// 实现日志方法
static void ConsoleLog(void* self, LogLevel level, const char* message) {
    ConsoleLogger* logger = (ConsoleLogger*)self;
   

你可能感兴趣的:(c语言,依赖倒置原则,开发语言)