🌱为何模块之间传递指针可以保证封装性(C语言)
接口与实现分离
外部模块只能看到结构体指针,无法直接访问内部字段。具体的数据操作逻辑被封装在拥有该结构体的模块内部。
访问控制
typedef struct ModuleData* data;
// 外部模块无法访问结构体定义,只能通过设定好的接口使用
data = module_create();
module_setVal(data, 123);
// 不能 data->value = 123;
保护数据完整性
可以为函数添加参数检查、边界检查; 模块内部可以确保多个相关字段同步更新;
依赖解耦
外部模块不需要知道结构体的具体布局; 内部结构变化的时候,只要接口不变,外部代码无需修改; 每个模块可以独立测试、维护和升级。
总结
总而言之,这样的设计遵守了“高内聚、低耦合”的设计原则。