C 语言没有 C++ 那样的 class、继承和虚函数,但在操作系统、驱动、AUTOSAR、Linux 内核等底层软件中,经常可以看到一种很成熟的写法:
把“基类结构体”嵌入“派生结构体”,再通过基类指针复用公共逻辑;需要具体能力时,再受控地恢复为派生类型。
这种模式可以理解为 C 语言中的组合式继承(struct embedding)+ 类型擦除(type erasure)+ 运行时类型恢复。
原创大约 11 分钟
C 语言没有 C++ 那样的 class、继承和虚函数,但在操作系统、驱动、AUTOSAR、Linux 内核等底层软件中,经常可以看到一种很成熟的写法:
把“基类结构体”嵌入“派生结构体”,再通过基类指针复用公共逻辑;需要具体能力时,再受控地恢复为派生类型。
这种模式可以理解为 C 语言中的组合式继承(struct embedding)+ 类型擦除(type erasure)+ 运行时类型恢复。
这份笔记围绕《深入设计模式》梳理设计原则和常见模式,也尝试用 C 语言示例理解其中的职责与协作关系。