重用对象

任何对象模型的一个重要目标是使对象作者能够重用和扩展其他人提供的对象作为其自身实现的片段。 使用 Microsoft Visual C++ 和其他语言执行此操作的一种方法是使用 实现继承,该继承允许对象从另一个对象继承其某些函数(“子类”),同时重写其他函数。

使用传统实现继承进行系统范围的对象交互的问题是,未明确定义实现层次结构中对象之间的协定(接口)。 事实上,它是隐式的和模糊的。 当父对象或子对象更改其实现时,相关组件的行为可能未定义或无法实现。 在任何单个应用程序中,实现都可以由同时更新所有组件的单个工程团队管理,这并不总是一个主要问题。 在一个团队的组件环境中,这些组件是通过将其他团队构建的组件作为黑盒重用来构建的,这种不稳定可能会影响重用。 此外,实现继承通常仅在进程边界内发挥作用。 这使得传统实现继承对于由许多工程团队构建的软件组件组成的大型不断发展的系统是不切实际的。

构建可重用组件的关键是能够将对象视为不透明框。 这意味着尝试重复使用另一个对象的代码片段对正在使用的组件的内部结构或实现一无所知,并且不需要知道任何内容。 换句话说,尝试重用组件的代码取决于对象的行为,而不是其确切实现。

为了实现黑盒可重用性,COM 采用其他已建立的可重用性机制,例如 包含/委派聚合

注释

为方便起见,重复使用 的对象称为内部对象 ,使用该内部对象的对象是 外部对象

 

请务必记住这两种机制中外部对象对客户端的显示方式。 就客户端而言,这两个对象都实现客户端可以获取指针的任何接口。 客户端将外部对象视为一个“黑盒子”,因此不需要关心其内部结构,只关心其行为表现。

有关详情,请参阅以下主题: