诸位大侠,我在构思一个软件架构。主要用于连接另外两个软件之间的功能,这句话说起来笼统,我举个例子来介绍这个流程。比如我的软件叫做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,届时又是另一套混合类型的变量。现在每个对象的属性如下表所列:
{ 读/写权限 数据类型 对象值
最小值
最大值 }
我的问题:要把这些不同类型混合在一起的本地变量集中整理编排以方便管理,优先照顾执行速度,可适当牺牲空间,请问用什么方式合适?我是做硬件开发的,软件方面没有系统地学习过,自己思考这个问题的时候首先想到的是用类模板,但不知道有没有更好的方法,望诸位高手不吝赐教,多谢!

解决方案 »

  1.   

    呵呵,前面写得太具体看上去有点乱。简言之,我有一堆格式固定的对象,格式如下:{
    Type <对象名>
    Type <对象名MIN>
    Type <对象名MAX>
    }对于每个对象,三个成员的Type类型相同。
    对于不同对象,相互之间Type类型不同,但是类型有限。我的需求是把这些对象统一管理起来方便引用。比如通过类指针引用,或者其它神马方法。
      

  2.   

    看了你的描述,有个不明白的地方是,你想把这些对象管理起来怎样使用在我看来,你对X和Y的数据使用,主要是一些转化和刷新,
    转化时一种策略,可以作为一个单独的模块,随着你的X,Y数据对象的变化来配置,
    而刷新则做成一种服务,不用考虑变化的
      

  3.   

    那个函数y=f(x)也属于一类方法。对于每套对象,都有一个函数f,这些函数的框架基本相同,内部结构(自变量与因变量之间关系的函数表达式)有一定的灵活性,我想用脚本方式实现。函数的框架包括指向自变量的入口,以及指向因变量的出口。我想用指针实现,而且希望把这个指针类型确定下来。如果被管理的对象类型乱七八糟,在使用指针传递地址的时候写起来就会很混乱了。
      

  4.   

    对于转化和刷新,我的描述不严谨。现在补充说明一下:函数f的执行由事件触发。这个事件就是自变量的值发生变化。执行的结果就是计算出来的因变量被写入Y程序的相应接口。比如软件X是一个网络应用,自变量是当前的美金对人民币汇率值,因变量是另一个软件Y中一个简单的文本框,表示480美金兑换的人民币值。函数f里面通过脚本写一个简单的四则运算表达式,那么每当汇率出现变化,Y软件文本框中的数字即自动更新。这个只是随便举例,我的应用与汇率无关。