编写可复用性更好的C++代码:Band对象和COMToys(4)
2006-07-21 11:46:12 来源:WEB开发网图十五
有关MyBands/BandObj的源代码很长,全都是单调乏味的MFC嵌套类COM代码。有兴趣就去下载源代码看吧!
小结
可复用编程的实质是确定通用行为并将它封装到可以在不同场合重复使用的类或子例程当中。对于Band对象而言,BandObj将Band对象精炼成四个方面:类ID(GUID),MFC类,资源ID,以及种类ID。加上其它相关的资源。每一种Band对象,其COM接口及其数据之间的交换基本上大同小异。所以为什么还要自己去写全部的代码呢?没有理由不使用BandObj来创建与Band对象有关的应用。所有你要做的只是从框架类派生并调用AddBandClass。某些程序员会反对说BandObj依赖MFC及其庞大的MFC42.DLL。没错,但是我不认为那有什么负担,至少对于外壳扩展是这样。MFC42.DLL被认为是Windows的一部分,它可以用于所有的Windows应用当中。
如果你看一看CBandObj,就会明白它的通用性所在——不仅仅是针对Band对象,它适用于所有的COM类。CBandObj用CMenu和加速键表实现了IContextMenu和IInputObject。还要求Band对象做些什么呢?它的IOleWindow 和IDockingWindow实现只需要一个CWnd。IObjectWithSite保存指针,就这么简单。与Band对象有关的只有一个接口IDeskBand及其仅有的一个函数GetBandInfo。其它所有的东西都没有什么实质性内容。它尽可能地在更深的层次上抽象这些接口的实现,在小巧的类中使你能轻松组装并一次又一次地在各种情况下重用这些接口。Shell文件夹,文件阅读器,ActiveX控件——所有一切。你只要组装几段代码并编译它就可以建立这些COM对象。这实在是太棒了。
从下一部分开始,我将利用BandObj来建立自己COMToys,从而向你展示如何使用BandObj。(待续)
更多精彩
赞助商链接