句柄类(handle classes)
问题背景是这样的:1)在极为安全的领域,即使核心实现已经封闭在库中不可见,但是头文件中的变量定义仍然可能会曝露一些内部信息;
2)在设计初期,实现部分固然需要经常变动,连头文件中变量定义也需要经常变动,因此在重编译的时候头文件也需要编译,有时候导致编译时间过长。句柄类可
以解决这类问题:
这是所有客户程序员都能看到的,其中struct cheshire是没有完全指定的类型说明或类说明,将用来存放真正的变量。在这种技术中,包含具体实现的结构主体被隐藏在实现文件中。
cheshire 是一个嵌套结构,所以它必须用范围分解符定义
struct handle::cheshire
在handle::initialize()中,为cheshire struct分配存储空间
,在handle::cleanup()中这些空间被释放。当编译 H A N D L E . C P
P时,这个结构的定义被隐藏在目标文件中,没有人能看到它。如果改变了 c h e s h i r e
的组成,唯一要重新编译的是HANDLE.CPP,因为头文件并没有改动。
句柄类的使用就像任何类的使用一样,包括头文件,创建对象,发送信息。虽然这并不是完美的信息隐蔽,但毕竟是一大进步。
阅读(611) | 评论(0) | 转发(0) |