这些天看COM/ATL的书,感觉到处都写着接口.
不管是COM异常处理,集合/枚举,还是连接点,处处都体现接口的光芒.如果你觉得某些实现必须要传递某个结构或一个数组---且慢!一定是接口设计没有到位!
接口粒度还不够小!1.传递结构数据的话,可以参考COM处理的实现
---用SetErrorInfo(,*IErrorInfo)和GetErrorInfo(,*IErrorInfo),来抛出或截获COM异常.
其实它也在作"传递有关异常的结构数据",但它采用的接口的方式.避免结构数据的传递.
最终结构数据的传递,是通过接口IErrorInfo中的一些get/set实现的.所以说,组件编程,要换脑子,避免以前养成的编程定势,处处要以接口方式思考问题.
可以将组件想象成一个芯片----只想怎样通过管脚来实现功能,而不是奢望打开芯片取数据---那是不可能的!!总结:组件编程,是不同于以往OP,OO编程的新的编程方式.-----一切都是接口!
不管是COM异常处理,集合/枚举,还是连接点,处处都体现接口的光芒.如果你觉得某些实现必须要传递某个结构或一个数组---且慢!一定是接口设计没有到位!
接口粒度还不够小!1.传递结构数据的话,可以参考COM处理的实现
---用SetErrorInfo(,*IErrorInfo)和GetErrorInfo(,*IErrorInfo),来抛出或截获COM异常.
其实它也在作"传递有关异常的结构数据",但它采用的接口的方式.避免结构数据的传递.
最终结构数据的传递,是通过接口IErrorInfo中的一些get/set实现的.所以说,组件编程,要换脑子,避免以前养成的编程定势,处处要以接口方式思考问题.
可以将组件想象成一个芯片----只想怎样通过管脚来实现功能,而不是奢望打开芯片取数据---那是不可能的!!总结:组件编程,是不同于以往OP,OO编程的新的编程方式.-----一切都是接口!
不错!要包装的组建的确需要通过脚本语言和C++来调用,所以才有了“不要传递数组和结构”的感慨!这段时间看COM,以前自以为清楚的c++的概念有模糊了:)。只得又拿起c++的书看起来,c++真是博大精深啊!!!希望多多交流!
当然也不是说传结构体不行,可以写一个COM组件定义一堆结构,将这个组件作为服务器端与客户端的数据传输通信协议来用,呵呵.