社区
C++ 语言
帖子详情
【关于类设计的问题】不知道该怎么去设计
lrj2005
2009-04-13 06:52:55
我做的一个模块(模块M)保存文件索引等信息,这个模块要和其他模块A,B,C交互(通过socket,接口已经定义好),现在M模块只是保存其他模块发送过来的消息,或者给其他模块提供消息,现在不是很清楚这样的类该怎么设计?请各位指点一下,多谢
...全文
134
17
打赏
收藏
【关于类设计的问题】不知道该怎么去设计
我做的一个模块(模块M)保存文件索引等信息,这个模块要和其他模块A,B,C交互(通过socket,接口已经定义好),现在M模块只是保存其他模块发送过来的消息,或者给其他模块提供消息,现在不是很清楚这样的类该怎么设计?请各位指点一下,多谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lin12345
2009-04-13
打赏
举报
回复
看<<设计模式>>
hylove9494
2009-04-13
打赏
举报
回复
学习!
arong1234
2009-04-13
打赏
举报
回复
这东西哪是三言两语说得清的,找本类似于UML建模的书看看,顺便看看你同事现有代码慢慢琢磨。不要指望外边有个专家,2天教会你编码,这是不可能的,如果真这么容易,你也不会到现在还不会了,因为所有的简单的方法都会被放到课本并教给你。
theone11
2009-04-13
打赏
举报
回复
设计模式里面不是有一种Observer模式么?
另外,没有必要一开始就追求类的设计良好吧,整体架构把握好就行了,可重用不过就是那浮云啊……
fairchild811
2009-04-13
打赏
举报
回复
[Quote=引用 9 楼 Dinelgua 的回复:]
由于模块M与其它模块交互都是通过socket 且接口已经定义号
那么模块M与其它模块在类关系上的耦合基本被解除掉了 除了接口相关的
那么模块M内部的类设计 就很简单了
建议
1 socket通信类 -- 负责socket连接数据收发
2 协议解析类 -- 负责解析收发数据的意义
3 模块索引类 -- 记录文件索引数据
[/Quote]
这样应该算是大方向有了吧
ryfdizuo
2009-04-13
打赏
举报
回复
10楼的建议可取,
设计类没有必要局限于MFC
只是谈一些思想...
mengde007
2009-04-13
打赏
举报
回复
10楼,既然不懂MFC,那就不要平感觉说说,具体的了解才是硬道理。大部分书说不行就不行??既然设计出来就有用武之地。
kiffa
2009-04-13
打赏
举报
回复
CArchive和CObject是什么?google一下似乎是MFC,完全不会,无法评论。
但一般来说若没有足够合理的理由,都不推荐用强耦合的继承关系。而且继承不是为了重用已有的代码,而是为了被重用。从CObject派生给我的感觉就像从std::string派生一样,至少大部分书上都说这是个馊主意,再次声明:我不懂MFC,只是凭感觉说说。
楼主的感觉挺对,除非必要,否则成员函数过多的大类一般都属于不良设计。以下是一些建议:
1,确定各种单一职责,用小类去完成单一职责。
2,用类和类之间的组合去完成整体功能。
3,或者抽象出一个高层的管理类来提供抽象接口给客户,通过组织各种低层小类来完成具体的工作。
4,多画画类间关系的草图,观察一下相互之间的依赖性,寻求更好的设计。
5,结合实际情况考虑重用、扩展、易测试性的需求,在灵活实现和复杂度之间选择平衡点。
6,条件允许就迭代,先做了再说,大不了扔掉重来。
7,细节方面:namespace、Pimpl惯用法等等很多,靠平时积累。
因为需求不是很明确,所以无法给出合适的具体方案,先按9楼说的做也不错。
Dinelgua
2009-04-13
打赏
举报
回复
由于模块M与其它模块交互都是通过socket 且接口已经定义号
那么模块M与其它模块在类关系上的耦合基本被解除掉了 除了接口相关的
那么模块M内部的类设计 就很简单了
建议
1 socket通信类 -- 负责socket连接数据收发
2 协议解析类 -- 负责解析收发数据的意义
3 模块索引类 -- 记录文件索引数据
wanghao111
2009-04-13
打赏
举报
回复
class M
{
//保存其他模块发过来的消息
//处理消息
//给其他模块发送的消息
]
Sco_field
2009-04-13
打赏
举报
回复
对照自己的功能,看 《模式设计》中有没有适合自己的
mengde007
2009-04-13
打赏
举报
回复
可以从CObject派生一个类,专门用于序列化数据。
mengde007
2009-04-13
打赏
举报
回复
这一般要用CArchive类
lrj2005
2009-04-13
打赏
举报
回复
因为是新手,不知该怎么样对这样的类进行封装,见笑了,如果弄成一个类的话,里面封装的方法太多了,感觉这样不对,就是不知道该对什么样的数据封装
猫已经找不回了
2009-04-13
打赏
举报
回复
这么抽象...
你先把模块M的具体功能列出来,然后写呗.
gao125210
2009-04-13
打赏
举报
回复
up
liliangbao
2009-04-13
打赏
举报
回复
帮顶~
你不
知道
的javascript
作者使用Node.js完成项目后,深感JavaScript给传统面向对象开发者带来障碍。推荐图灵出版的《你不
知道
的JavaScript》,该书开放出版,虽只出第一卷,但内容聚焦JS精妙含混处。书中解析了作用域、闭包、this和对象原型等核心要点,还提及ES6规范及TypeScript可弥补JS不足。
Java
设计
模式——六大原则之最少
知道
本文介绍了迪米特法则,即最少
知道
原则,旨在减少
类
之间的耦合度。通过实例展示了如何应用该法则来优化
类
的
设计
,并讨论了过度遵循可能带来的
问题
。
一直都
知道
final修饰的
类
不能被继承,但是不
知道
为什么不能被继承!
本文探讨了final方法和final
类
的应用场景。对于方法,使用final可以保护其不被子
类
覆盖,同时提高程序执行效率;对于
类
,声明为final则意味着该
类
不可被继承,确保
设计
的完整性。
不
知道
怎么
设计
页面,看这一篇就够了
本文系统整理了10种主流前端
设计
风格,包括扁平化
设计
、Material Design、极简主义、暗黑模式、新拟物
设计
、拟物化
设计
、赛博朋克风格、手绘风格、复古像素风格和孟菲斯风格。每种风格的核心特点、适用场景及参考案例帮助开发者根据项目需求选择合适的
设计
方向。
excel去重怎么操作_这些年,为了在 Excel 中给序列去重,不
知道
坑死了多少人
本文深入探讨了Excel中去除重复数据的各种方法,包括Excel按钮点击法、透视表法和数组函数法,并提出了Excel的四条定律。作者通过实例解析了如何使用更高级的方法——PowerBI的PowerQuery,实现数据去重,同时满足系统封闭性、可传递性和可扩展性的要求。文章强调了在数据分析中,选择正确的工具和思维方式的重要性,指出PowerBI在Excel基础上的优越性。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章