标签:地址 down 耦合 对象 指令 简单 说明 拷贝 默认
书中第六章 隔离。 主要在撰述什么须要定义在头文件?什么应当移到编译单元中?
核心仍然是先区分接口定义与实现细节。实现细节的改变会导致客户代码的又一次编译,从逻辑上也表示与客户代码间可能存在着强耦合。
主要考察下面实现细节。它们会在接口中引入实现细节。也是须要考虑进行隔离的内容:
后面作者对各个细节推荐一些手法。相对照较简单。后面则介绍了几个经常使用手法:
考虑到上层代码对底层的操作需求。作者提出了过程接口(The Procedural Interface),能够结合常见的API来理解,它是一组函数的集合。出如今组件的顶部,并将功能的一个子集暴露给用户。
作者概括了编程接口的要求:
在实现方式上,以面向对象的Wrapper来实现这种需求最佳的。而过程接口将针对无法简单使用独立的封装类来实现的系统。
事实上一个大型系统也是能够拆分出不同的领域。分别以Wrapper的形式来实现的。能够对照WebView的接口。以及Blink中的web层次。
书中主要是探讨了针对所持有对象的操作。
上面也提到的Opaque Pointer。还特别说明了Handle(句柄)模式来管理动态分配的对象。
一个过程接口既不是面向对象的也不是特别美观。但它确有一个非常大的长处:过程接口总是能够用于将大系统的组织与client程序相隔离–即使在设计的早期阶段并没有考虑这种接口。
隔离会引入一些开销。选择是否进行隔离的常见原因包括:
作者提供两套经验值供决策时參考(中文编译的图表不太严谨,第5章有图标错。这里明明是两个表,却合成了一个表。)。
作者最后讨论隔离决策时,建议是否进行隔离取于被使用的范围,性能要求的高低,以及成员函数的大小(是否轻量级)。性能要求高不要隔离。轻量级的实现也不须要隔离。
事实上就是隔离本身会引入开销。假设为了隔离引入的开销过式,或者引入更不稳定的复杂度。就不要急于隔离。而对于大型、广泛使用的对象则要尽早隔离。
标签:地址 down 耦合 对象 指令 简单 说明 拷贝 默认
原文地址:http://www.cnblogs.com/cxchanpin/p/7102827.html