抽象公共化,实现具体化

有个内存管理模块对应用屏蔽了不同环境的内存差异,提供了统一的内存管理接口及机制。其内部层次大致如下:

facade ----------> 抽象实现 ------->具体的内存接口(根据实际运行内存管理配置)。


在三种实际环境中会用到某个库的内存申请释放操作,而这个第三方库的内存操作接口在两种环境下是一样的,在第三种环境下则是不同的,差异在某个接口的参数上。如内存申请的ID号,在前两种环境下的范围是0-100,而在第三种环境下却只有0-10。

开始开发时,没有区分这三种典型环境,而是采用了一种保守的值,三种环境统一使用同一套代码,都用ID为0的值。

因为0是默认ID,不能区分实际内存操作者,后来想把ID号修改为某个有含义的值,如50。问题来了,由于实现不够具体化,没有细化到不同环境上,导致只验证了前面两种,第三种没有验证,导致了问题。

如果实现具体化到了最终运行环境上,那么肯定可以知道有第三种环境需要验证。


即从下面这个结构:

facade ----------> 抽象实现 ------->具体的内存接口(根据实际运行内存管理配置)

变成如下这个结构:

facade ----------> 抽象实现 ------->具体的内存接口(根据实际运行环境 内存管理配置)

具体的内存接口 (根据实际运行环境 内存管理配置)

具体的内存接口 (根据实际运行环境 内存管理配置)



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值