包含/委派
COM 中对象重用的最常见机制是 包含/委派。 这种类型的重用是大多数面向对象的语言和系统中熟悉的概念。 外部对象需要使用内部对象,充当内部对象的对象客户端。 外部对象“包含”内部对象,当外部对象需要内部对象的服务时,外部对象将实现显式委托给内部对象的方法。 也就是说,外部对象使用内部对象的服务来实现自身。
外部对象和内部对象不需要支持同一接口,尽管包含实现外部对象不实现的接口的对象和实现外部对象的方法只是作为对内部对象中相应方法的调用是合理的。 但是,当外部对象和内部对象的复杂性大相径庭时,外部对象可以通过委托对内部对象中实现的接口方法的调用来实现其接口的某些方法。
为外部对象实现包含非常简单。 外部对象创建它所需的内部对象,就像任何其他客户端一样。 这一点并不新鲜—该过程就像一个C++对象,该对象本身包含用于执行某些字符串函数的C++字符串对象,即使外部对象不被视为其自己的字符串对象。 然后,使用其指向内部对象的指针,对外部对象中方法的调用将生成对内部对象方法的调用。
相关主题