我在前面的MCD当中已经讲过了两种复用的技术:静态复用技术和动态复用技术,两种都可以实现代码的无缝链接。现在我将向大家介绍一种新的软件复用技术:通过名字空间的复用技术。
从本质上讲,以前的静态复用技术是通过在模板当中静态替换相应的类型来实现模板的复用的。动态复用技术是通过OOP技术采用执行时期的动态类型识别来实现二进制的复用的。但是我这里所讲的复用是通过在编译时期通过改变名字空间的方式来实现的代码级别的复用。
下面我将介绍我的这种复用的技术。
假设一个系统需要用到一个共用的函数fun(),这个函数相当于一个subsystem,那可以先将该fun() extern出来,然后就可以在服务器端设计几种不同的版本的fun(),并且将这些fun()分别封装到不同的名字空间当中,在客户端可以通过调用fun()前的名字空间来实现函数的复用。
假设一个系统Sys需要组装有三个组件ComA,ComB,ComC中的一个,三个组件要共同完成的核心功能的接口为Com::doSth1(),Com::doSth2(),Com::doSth3()这三个组件对外的一个对象为extern Com com;然后将这三个组件分别放到三个名字空间当中分别为A,B,C,则在客户端的main函数当中,则直接可以利用com来完成doSth1(),doSth2(),doSth3()的功能,可以通过更改com前的名字空间来方便的更改com的具体类别来做到ComA,ComB,ComC的等价变换。
总结:由以上技术,我们可以通过名字空间的技术来实现代码级别的复用。这样更加有利于组件的升级与维护、任务的分解与测试。好处我就不在这里一一列举了。
其实这种技术是我突然想到的,我想不仅仅是在C++当中适用,JAVA等只要有包存在的语言都可以这样来实现代码级别的复用。由于不知道怎样将图片和代码贴上,目前还做不出大家那样的好的BLOG,请大家见谅,并且请网友们提出宝贵的意见。
TAGS:软件复用,名字空间,组件,接口,对象,函数,C++,包
从本质上讲,以前的静态复用技术是通过在模板当中静态替换相应的类型来实现模板的复用的。动态复用技术是通过OOP技术采用执行时期的动态类型识别来实现二进制的复用的。但是我这里所讲的复用是通过在编译时期通过改变名字空间的方式来实现的代码级别的复用。
下面我将介绍我的这种复用的技术。
假设一个系统需要用到一个共用的函数fun(),这个函数相当于一个subsystem,那可以先将该fun() extern出来,然后就可以在服务器端设计几种不同的版本的fun(),并且将这些fun()分别封装到不同的名字空间当中,在客户端可以通过调用fun()前的名字空间来实现函数的复用。
假设一个系统Sys需要组装有三个组件ComA,ComB,ComC中的一个,三个组件要共同完成的核心功能的接口为Com::doSth1(),Com::doSth2(),Com::doSth3()这三个组件对外的一个对象为extern Com com;然后将这三个组件分别放到三个名字空间当中分别为A,B,C,则在客户端的main函数当中,则直接可以利用com来完成doSth1(),doSth2(),doSth3()的功能,可以通过更改com前的名字空间来方便的更改com的具体类别来做到ComA,ComB,ComC的等价变换。
总结:由以上技术,我们可以通过名字空间的技术来实现代码级别的复用。这样更加有利于组件的升级与维护、任务的分解与测试。好处我就不在这里一一列举了。
其实这种技术是我突然想到的,我想不仅仅是在C++当中适用,JAVA等只要有包存在的语言都可以这样来实现代码级别的复用。由于不知道怎样将图片和代码贴上,目前还做不出大家那样的好的BLOG,请大家见谅,并且请网友们提出宝贵的意见。
TAGS:软件复用,名字空间,组件,接口,对象,函数,C++,包