现有一基础模块A,提供模块间通信服务。类B、C中都有一个私有A*成员用于与其他模块之间通信,B、C的构造函数要求提供一个A的指针来初始化该私有成员。使用B的开发人员在平台W1上开发程序P1,具有A的A1实现版本;使用C的开发人员在平台W2上开发程序P2,具有A的A2实现版本;P1,P2进行通信。现在来看看A的界面如何使用:
对于A的设计者,给出A的界面接口规范A.h向所有驱动厂商、用户提供;并且给出了W1平台的实现A1.h,A1.cpp,其中A1中有派生类A1 : public A,并在A1.cpp中给出了全部接口实现;编译出A1库,并且向客户提供头文件A1.h;
类B为使用A,在B的接口规范B.h中包含A.h,定义A*私有成员,并通过构造函数获得一个A*;B.cpp的所有实现都对A*进行操作。
类C也是这样。
开发P1的程序员在自己定义的模块中需要包含B.h来使用B,其所在的W1中使用的是A的A1版本,故在头文件中应该:
cpp 代码
-
- #include "B.h"
- #include "A1.h"
-
- A1* a1ptr = new A1(...);
- B b(a1ptr);
- b.fun()
- ...
而开发P2的程序员,首先根据A.h开发自己的A的实现A2.h, A2.cpp,然后在自己的模块中使用A2:
cpp 代码
-
- #include "C.h"
- #include "A2.h"
-
- A2* a2ptr = new A2(...);
- C c(a2ptr);
- c.fun()
- ...
这样,A的开发人员可以根据不同环境,开发不同的驱动版本A1, A2, ....;而这些A的不同实现,并不影响B、C的设计和实现人员;P1、P2的开发人员可以根据自己实际需要选择A的不同实现(或者根据A.h自己再开发),而应用B,C。
另外一个好处是更换A的驱动,并不需要重新编译B、C,只需要重新编译P1,P2,并重新链接B、C即可。结构如下图:
带箭头的线表示继承关系,带实心球的线表示包含关系。
分享到:
相关推荐
使用情况:ZW,CF,FX,BB,GD,MR,GZ,YSYF,SM frmIN_SourceAccount.frm 说明: 帐务取数公式定义窗体 使用情况:已经不使用 frmInformation.frm 说明: 伊康财务系统信息窗体 使用情况:ZW,CF,FX,BB,GD,MR,GZ,YSYF ...
金山卫士BkWin界面框架是一款专为开发人员设计的界面构建工具,它允许开发者使用XML语言来定义和布局用户界面。该框架提供了一种高效且灵活的方式来创建具有专业外观的应用程序界面,同时简化了资源管理和界面更新的...
在使用者是管理维护人员时,更多情况下会使用远程登录管理服务器(易受到网络等因素影响),故更节省资源,更快速的命令行成为首选。 命令行缺点——需要记忆的内容多 命令行界面的使用 Linux启动后,默认进入图形...
使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果。 在很多情况下,界面的漂亮与否,取决于PS的制作及创意,而界面...
但是,Putty默认情况下不能显示远程图形界面,需要借助其他工具来实现这个功能。 使用Putty管理Linux系统的优点是可以在Windows环境中远程连接到Linux服务器,实现远程图形界面显示。为了实现这个功能,需要在Linux...
提供详尽的说明文档可以确保用户在遇到问题时能够快速找到解决方案,从而避免了因困惑或挫败感而放弃使用的情况。良好的用户支持和文档是优秀软件的标志,它显示了开发者对用户需求的尊重和理解。 从标签“界面”和...
在“jx.rar”这个压缩包中,我们可以预见到与使用Tkinter来构建用户界面,以及Python多线程和进度条功能相关的代码示例。 首先,Tkinter库提供了丰富的组件,如按钮、文本框、标签等,用于设计窗口和控件。通过这些...
"相当巴适"是四川方言,意味着非常舒适或令人满意,暗示这个界面设计既美观又易于使用。 结合【标签】"webqq",我们可以推测这个项目可能涉及到以下技术知识点: 1. **前端开发**:前端开发者使用HTML、CSS和...
金山界面库是一款由金山软件公司开发的用于构建高效、美观且易于使用的图形用户界面的工具集。它提供了丰富的控件和组件,使得开发者能够快速创建出具有专业品质的应用程序界面。本使用说明文档将深入介绍如何利用...
9. **测试**:在开发过程中,应进行多轮的测试,确保界面在各种情况下都能正常工作,包括不同浏览器、操作系统以及分辨率的兼容性测试。 10. **版本控制**:为了便于团队协作和代码管理,开发者可能会使用Git等版本...
和利时(HOLLiAS)人机界面HD3000使用手册pdf,和利时(HOLLiAS)人机界面HD3000使用手册:HD3400L文本显示器是连接可编程序控制器(PLC)或具有串口通讯能力电气设备的小型人机界面 (HMI) 产品,它能以文字、数据、...
9. **调试和测试**:在界面设计完成后,需要进行详尽的调试和测试,确保界面在各种情况下都能正常工作,没有视觉问题或功能错误。 通过以上知识点的学习和实践,开发者不仅可以掌握仿VC界面的设计技巧,还能提升在...
本文将深入探讨“边界面”概念及其在ABAQUS中的应用,包括边界面模型、UMAT子程序的使用以及如何在ABAQUS循环中处理界面问题。 首先,边界面(或称为界面)是指不同材料或结构之间的交界区域。在实际工程问题中,如...
- 考虑不同屏幕分辨率和窗口大小的适配,确保界面在各种情况下都能正常工作。 遵循以上步骤和技巧,我们可以创建一个从登录界面平滑过渡到主界面的WPF应用,避免“横向裂开”的问题,提供更优质的用户体验。不断...
在"labview界面设计.zip"这个压缩包中,包含了关于LabVIEW界面设计的一些关键知识点,如分栏工具的使用、窗格对象的缩放、隐藏功能以及自动适应屏幕分辨率等。以下是这些知识点的详细说明: 1. **分栏工具的使用**...
针对这种情况,"java界面美化 提供多套皮肤直接使用"的主题提供了优化和美化Java GUI的方法,使得应用的视觉效果更加现代、美观。这个资源包包含了多种预设的皮肤,可以方便地应用到你的Java应用中,实现快速的界面...
通过这个界面,你可以监控消息发送和接收的情况,查看消息堆积、延迟等信息,从而及时发现并解决问题。这对于优化系统性能、保证消息传输的可靠性至关重要。 在项目文件"rocketmq-dashboard-master"中,包含了实现...
不过,对于需要离线应用或者嵌入式Web界面的情况,Swing仍然是一个选择。 **Web服务与后端交互** 在Java中,Spring框架是常用来构建后端服务的。Spring Boot简化了Spring的应用启动和配置,使得开发者能快速搭建...
虽然提供的文件列表中只有"content.txt",通常情况下,这个文本文件可能会包含关于如何使用这些界面元素的说明、代码示例或者是设计资源的详细描述。用户在下载后需要打开这个文件来获取具体的操作指导和使用方法。 ...