混合数据类型的规划,架构设计问题

Simality 2011-01-19 01:06:26
诸位大侠,我在构思一个软件架构。主要用于连接另外两个软件之间的功能,这句话说起来笼统,我举个例子来介绍这个流程。

比如我的软件叫做F,另外两个软件一个叫X,另一个叫Y。X与F,F与Y之间通过COM组件、winsock等方式通讯,具体通讯方式根据实际情况决定。

X软件里面有一个UINT16的变量,例如UINT16 IndependentX,在X软件中实现一种功能,可以通过软件间的接口导出。它有一个取值范围,用UINT16 IndependentX_MIN和UINT16 IndependentX_MAX表示。

Y软件里面也有一个UINT16的变量,例如UINT16 DependentY,Y软件中实现另一种功能,Y软件的接口允许从外部改写这个变量。它也有一个取值范围,用UINT16 DependentY_MIN和UINT16 DependentY_MAX表示。


在F软件中,上述两个变量都被接口(实现方法不赘述)本地化,例如变成了UINT16 LocalizedIndependentX、UINT16 LocalizedDependentY,前者只读,后者可读写。

然后在F软件中用一个函数y=f(x)对二者进行连接。自变量的取值范围是定义域,因变量的取值范围用来校验f(x)函数的值域合法。每次执行这个函数即可完成从软件X到软件Y的一次刷新。


以上就是我想实现任务的一个缩影。


整体情况相对复杂一些,主要是在复杂性和灵活性两个方面。

从复杂性来讲,除了上面说的那个UINT16变量之外,还有其它类型变量,如UCHAR、UINT32、FLOAT等等,多数都是ANSI C的基本变量。最复杂的也只是LPSTR,长度可变。每种类型的变量个数不确定,值不确定

从灵活性上来讲,今天有软件X和软件Y,明天可能出现软件M和软件N,届时又是另一套混合类型的变量。



现在每个对象的属性如下表所列:
{ 读/写权限 数据类型 对象值
最小值
最大值 }


我的问题:

要把这些不同类型混合在一起的本地变量集中整理编排以方便管理,优先照顾执行速度,可适当牺牲空间,请问用什么方式合适?

我是做硬件开发的,软件方面没有系统地学习过,自己思考这个问题的时候首先想到的是用类模板,但不知道有没有更好的方法,望诸位高手不吝赐教,多谢!
...全文
108 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Simality 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 covsno 的回复:]
需要关注的话
自己去订阅这个事件就可以了啊
[/Quote]

事件方面没有问题,问题是事件所基于的对象类型太杂。
Simality 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wateryh 的回复:]
看来你的麻烦在于
如何使不同的数据对象给计算函数传值,并获结果,
你现在想要用指针实现,但卡在不同数据对象和指针的转化上,

这种数据对象和计算函数传值方式必须在一个地方进行映射的,
就要看你想要把它划分到哪个模块,或者作为一个专门的模块


猜的,呵呵
[/Quote]

大致是你说的这个意思,而且函数计算结果也要返回给不同类型的数据对象。这么一来一回两个环节都要通用。

计算函数本身我想作为一个模块处理,而且是比较核心的模块。映射的部分我也想归入同一个模块,但是不知道这个映射的过程具体都有哪些步骤呢?
covsno 2011-01-19
  • 打赏
  • 举报
回复
需要关注的话
自己去订阅这个事件就可以了啊
wateryh 2011-01-19
  • 打赏
  • 举报
回复
看来你的麻烦在于
如何使不同的数据对象给计算函数传值,并获结果,
你现在想要用指针实现,但卡在不同数据对象和指针的转化上,

这种数据对象和计算函数传值方式必须在一个地方进行映射的,
就要看你想要把它划分到哪个模块,或者作为一个专门的模块


猜的,呵呵
Simality 2011-01-19
  • 打赏
  • 举报
回复
对于转化和刷新,我的描述不严谨。现在补充说明一下:

函数f的执行由事件触发。这个事件就是自变量的值发生变化。执行的结果就是计算出来的因变量被写入Y程序的相应接口。

比如软件X是一个网络应用,自变量是当前的美金对人民币汇率值,因变量是另一个软件Y中一个简单的文本框,表示480美金兑换的人民币值。函数f里面通过脚本写一个简单的四则运算表达式,那么每当汇率出现变化,Y软件文本框中的数字即自动更新。这个只是随便举例,我的应用与汇率无关。
Simality 2011-01-19
  • 打赏
  • 举报
回复
那个函数y=f(x)也属于一类方法。对于每套对象,都有一个函数f,这些函数的框架基本相同,内部结构(自变量与因变量之间关系的函数表达式)有一定的灵活性,我想用脚本方式实现。

函数的框架包括指向自变量的入口,以及指向因变量的出口。我想用指针实现,而且希望把这个指针类型确定下来。如果被管理的对象类型乱七八糟,在使用指针传递地址的时候写起来就会很混乱了。
wateryh 2011-01-19
  • 打赏
  • 举报
回复
看了你的描述,有个不明白的地方是,你想把这些对象管理起来怎样使用

在我看来,你对X和Y的数据使用,主要是一些转化和刷新,
转化时一种策略,可以作为一个单独的模块,随着你的X,Y数据对象的变化来配置,
而刷新则做成一种服务,不用考虑变化的
Simality 2011-01-19
  • 打赏
  • 举报
回复
呵呵,前面写得太具体看上去有点乱。

简言之,我有一堆格式固定的对象,格式如下:

{
Type <对象名>
Type <对象名MIN>
Type <对象名MAX>
}

对于每个对象,三个成员的Type类型相同。
对于不同对象,相互之间Type类型不同,但是类型有限。

我的需求是把这些对象统一管理起来方便引用。比如通过类指针引用,或者其它神马方法。
快乐鹦鹉 2011-01-19
  • 打赏
  • 举报
回复

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧