[原创]c++环境面向对象编程对于2个对象之间的通信如何解决

本人才学有限,望大师手下留情给以多支持和鼓励,感恩中......

闲话少说正题如下:

本人在开发过程中曾经碰过一个疑惑:

面向对象开发时候在类之间的通信如何做?

1:如果把所有的需要参数都通过结构指针传过去那么需要调用类的一些功能函数如何处理?

2:我就写个全局变量吧,爱什么数据就往那边去取吧?但是如果你要建立多份单独处理数据如何做??,你在动全局变量的时候别的代码也在用,如何同步???随着代码的增加,你的全局变量也悄悄增加了不少.一行错误的修改全局变量让你查上几天几夜偶有发生.就如本人以前一个小程序是否有人和我有同感?

3:我要对我自己类对象里面数据做单独处理,不要全局来全局去了,可以创建多份对象?但是我取不到我需要的上层数据或者其他模块数据或功能,这个是困扰我很久一直致力去寻找解决方案的问题.也许是本人学习能力不强吧,在没有高人指点下,自己查资料看书,长时间无所理解和领悟.

4:我要更换其中一个模块,或在中间加一个控制层的时候天要塌下来了,很多以前调试过的痛苦又要来一遍.

5:几个人一起开发做几个模块个人认为用dll比较好一个模块一个dll,但是通信又是如何做?无数个接口函数?传无数种类的参数?

6:数据库接口想单独一个模块,但是如果查询有几个结果后发送数据给客户端....等等不是说好的模块化了嘛数据库的项目得包含网络模块貌似不太合理,不包含给上层调用者吗?数据没有固定多少个返回什么?用万能指针?得开辟空间!!!如图:如果底层模块相互之间通信这复杂程度和调试维护代价将是不小负担。

总结上面几个困扰,其实无非是通信问题.以下一点感想献给和我一样存在困惑的人的一点自己拙劣的想法来个抛砖引玉希望能有老师指正:

先做一个演示工程吧:

这边是3个工程我用2个动态库加一个exe工程来做下演示:

说明下,对话框那边就是我们人机对话的工程是属于上层数据库的是用来存储本地数据,我用的是基于FastDB来做我的数据库存储,网络通信我基于hp-sock代码来做的

看到图片想了这个问题了吧 CnetIoSpi是么东西?做什么用的?

是的就是一个给下层类里面提供回调的接口当网络消息回来了往我们上层推送数据给上层去处理吧。

这样继承就够了么?没有。。。。

这样就能调用上层的回调函数了

数据库模块如何调用网络模块呢?同样注册这个模块在主调上层中就有调用这个类的功能了转接到上层去调用网络功能,这也就是mfc和windows常采用回调方式去解决复杂调用关系和模块通信的难题吧。

水平实在有限错漏也难免,理论功底不厚不能写出精彩文章,只要能给您的思想有些启示那么本文目的达到了,希望与诸君共同学习进步。本文图片的代码由于牵涉太多是我现在手上开发还没有完成的所以就不发了,直接给你们最新构建的3个模块演示的版本来说明.

需要演示代码可以去:https://download.csdn.net/download/lyfwwb/10381665

下载:点击打开链接

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

界忆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值