当前位置:首页 » 多媒体相关

100分,求一解决方案,论题为如何泛化服务


问题描述:现有一接收数据包服务,定制了三个类   cappmain、ciocp、cdatabase,其中ciocp和cdatabase聚合形成cappmain,现在cappmain有一个init()方法,可以初始话ciocp实例和cdatabase实例,ciocp是完成端口的封装,包含的方法有recvdata(),cdatabase用于创建oledb对象,用于操作数据库,其中提供了一个方法createsql()和writetodb(),现在的问题是,recvdata方法中包含验证数据包合法性的程序和解包的程序,而createsql中含有创建存储过程的语句,writetodb中包含调用特定的存储过程的语句,现在要求,以com方式对这个服务进行泛化,并且提供三个方法,要求,不管在什么方法下,只要传入三个函数指针,就可以进行特定的解包、创建存储过程、和写库,大家考虑考虑如何做?

推荐阅读

  • 免费后第一次狂欢 盛大网游圣诞大餐 [详细内容]
  • 诺基亚瞄准MMS市场 手机面临更新潮 [详细内容]
  • 专访:诺基亚要让短信改朝换代?! [详细内容]
  • 防盗版毒招!PS3游戏竟只认第一次? [详细内容]
  • CECT A706; S857升级操作 [详细内容]
  • 旋转明星 索尼爱立信S700c降价促销时尚手机 [详细内容]
  • 我的第一次创业 [详细内容]
  • 网友回答:
    网友:lop5712

    没明白你的意思,你自己不是已经说了如何做了吗?  
      使用三个com组件,分别实现接口iappmain、iiocp、idatabase,要实现不同的数据协议和存储过程的联合,实现特定的支持iappmain接口的com组件即可。  
      不过我以为你的这个设计不好,应为iappmain的功能只是生成另外两个com组件的实例,所以iappmain的init应该改为hresult   init(   [in]   clsidref   clsidiocp,   [in]   clsidref   clsiddatabase   );在init的实现中通过调用createinstance直接动态创建另外两个com组件的实例,因此是包容,不是聚合,但是仍可以用聚合的外貌对人,不过有违com的祖讯。

    .

    讨论区

    Login