高分求比较好的类设计(讨论帖)

modaoshi3002 2009-09-19 05:37:23
加精
主程序类:
TMain = Class(TObject);

数据操作类A:
TA = Class(TObject);

数据操作类B:
TB = Class(TObject);

函数类C
TC = Class(TObject);

我在设计这个主类时,会把A,B, C这三个类的实例,作为主类的成员。

Type
TMain = Class(TObject)
private
FA : TA;
FB : TB;
FC : TC;
public
//
//
end;


其中 A实例 和B实例的各自的数据成员会有很多交流,而这些交流是通过类C里的成员函数来实现的。
比如A中 有个成员 FA.a 的数据,是要通过FB 中的一个数据,经过计算得来,而这个计算任务,我们让类C的实例来做。
请问下,我的这个A,B,C三个类,该怎么设计,才比较好呢???
...全文
707 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainychan2009 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 smallhand 的回复:]
1.无论你怎么设计,肯定会有一个全局内容,你可以把这些全局的变量和处理方法封装成一个类,程序运行的时候创建一个实例(参考Single模式)
2.数据库可以先定义一个接口或者是抽象类,看具体情况,通过接口引用和具体实现相分离。(参考桥接模式)
3.数据库连接和传输部分也可以创建一个抽象类,然后再创建一个管理类来管理这些链接和传输,这样就可以扩展成你封装的任意连接了(三层,两层,还是其他方式就可以……
[/Quote]
只用全局常量,全局变量放在类里,这样访问也有个提醒,比较安全一点,呵呵
sandok 2009-10-27
  • 打赏
  • 举报
回复
学习了
modaoshi3002 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zuobaoquan 的回复:]
遵循一个原则:高内聚、低耦合。建议你看一本书:《Applying UML and Patterns》
[/Quote]

听了这位兄弟的昨天在卓越上买了。。。。第三版的中文版
husion01 2009-09-24
  • 打赏
  • 举报
回复
UP
勉励前行 2009-09-23
  • 打赏
  • 举报
回复
A实例 和B实例的各自的数据成员会有很多交流,而这些交流是通过类C里的成员函数来实现的。

類A類B有自己的數據和方法,類C是純操作類,用於操作AB,沒有自己的數據。

這是A中有B,同時B中也有A的例子。有以下幾種方式:

1、考慮 A B 從 C 繼承,C中的方法均用靜態方法。(AB強耦合)
2、ABC融合一起,只有一個類。(AB完全整合)如果大多情況下,AB是同時出現,且共生共死的話。
3、類A中設一指針,指向B,類B中同樣處理。(AB弱耦合)好處是使用方便而且能實現一定程度的隔離。
4、A B 各自獨立相互隔離,C為純操作類(或函數集),聯接AB。(AB完全隔離)

注意:封裝是為了易用,簡單的就是正確的就是容易重用的。從使用者的角度去考慮一下,可能會有不同的發現。不要認定耦合就是不好的

zhengbo2006 2009-09-23
  • 打赏
  • 举报
回复
十楼分析的挺透彻 说的挺中肯的
xjq2003 2009-09-23
  • 打赏
  • 举报
回复
学习
zhf777 2009-09-23
  • 打赏
  • 举报
回复
C类的计算函数应该拆分放到A类和B类里,如不能修改代码,可使用装饰器模式重建A/B类
YangWenChaoX 2009-09-23
  • 打赏
  • 举报
回复
化繁为简。。。
anjie4402211 2009-09-22
  • 打赏
  • 举报
回复
学习了...没有实际例子 似乎理解不了...
脑袋 不够抽象..
jking1989 2009-09-22
  • 打赏
  • 举报
回复
我不懂哈
想学学
modaoshi3002 2009-09-22
  • 打赏
  • 举报
回复
呵呵,都推荐了,多谢斑竹
我采取了10楼的建议,但没有另外放置C类的函数,而是直接放在了主类中。
多谢各位,帖子继续放在这里讨论。
huaidang_0 2009-09-22
  • 打赏
  • 举报
回复
不错
ggggaiipmq 2009-09-22
  • 打赏
  • 举报
回复
我就只是路过的而已,我刚开始接触,不懂...
zhuzhupj 2009-09-22
  • 打赏
  • 举报
回复
帮顶.exe
7年 2009-09-22
  • 打赏
  • 举报
回复
10楼说的感觉不错。
Harryfin 2009-09-22
  • 打赏
  • 举报
回复
这都推荐了?又没讨论又没结果,楼主又没表达清楚具体的东西。不会是没东西推荐了吧。。。
gwemail2003 2009-09-22
  • 打赏
  • 举报
回复
1 如果A, B, C已经存在了,不能改变 ,可以考虑使用Adapter模式
2 如果A, B, C可以改变,可以考虑重构.
小猫姐 2009-09-22
  • 打赏
  • 举报
回复
路过~
zhouwanhuai 2009-09-22
  • 打赏
  • 举报
回复

加载更多回复(24)
JSP基于SSM宠物医院专家预约宠物交流系统可升级SpringBoot毕业源码案例设计 前台框架: Bootstrap(一个HTML5响应式框架) 开发环境:myEclipse,Eclipse或Idea + mysql数据库 后台框架: SSM(SpringMVC + Spring + Mybatis) 1.用户登录模块: 未注册用户只能浏览系统中的常规信息,如宠物医院简介,宠物喂养基本常识等基础信息 注册模块: 注册信息(宠物昵称,别(拉布拉多,法斗等),体型(大型,中型,小型),体重,年龄,是否接种疫苗,主人姓名, 电话, 邮件 等), 用户 可自行修改维护宠物信息 针对注册信息系统 可提供相应犬的喂养定制计划,疾病预防,咨询等。 咨询可实现非实时和实时两种, 非实时可通过邮件发送相关咨询内容回复,实时提供在线问答 2.管理员模块:数据维护(包括对用户,宠物,发文等) 对用户信息的维护,管理 系统常规信息的维护(增加, 删除, 修改功能 及发布功能) 3.喂养定制查询模块: 根据宠物的型、体型查询宠物的喂养计划,以及宠物疾病预防知识。 注册用户前台可查询相应的喂养计划方案, 相应的疾病预防 管理员可 制定维护推送喂养计划方案至相应的宠物犬用户和相应的疾病预防知识,以便其查看。 4.咨询模块: 注册用户: 可提出相关喂养,保育等问题 于系统 宠物医院人员的回答显示 预约专家 系统提供相关宠物护理专家(专家名, 专长, 资历, 可预约时间),可通过预约方式 线下问询, 用户可查看预约成功与否,如有变故,系统提供告知以免耽误行程 医院管理人员 对于预约管理 可查询 客户的预约时间,审核 ,对由于特殊原因无法调整 发送相关信息至预约用户。 5. 论坛交流模块: 注册用户 展示区:提供给各个注册用户访问查询 其他用户留下的养犬笔记等精华 讨论区: 注册用户互相交流心得区域, 用户的养犬心得在此发布 管理员: 对于所有的论坛中的信息进行管理维护, 并对一些精华进行归纳整理后 划归到展示区 供大家阅览 管理员对论坛中的内容有删除等操作, 又有过滤某些敏感词的操作。 实体ER属性: 用户: 用户名,登录密码,宠物别,宠物昵称,宠物照片,性别,体型,体重,出生日期,是否接种疫苗,主人姓名,联系电话,邮件,备注信息,注册时间 宠物别: 别id,别名称 宠物专家: 专家账号,登录密码,姓名,性别,出生日期,专家照片,毕业学校,工作经验,联系电话,专家详情 订单: 预约id,预约专家,预约日期,预约时间,预约内容,预约用户,处理状态,处理结果,预约备注 子: 子id,子标题,宠物分,子内容,浏览量,发人,发时间,是否精华,审核状态 子回复: 回复id,被回子,回复内容,回复人,回复时间 用户咨询: 留言id,留言标题,留言内容,留言人,留言时间,回复内容,回复时间,审核内容 资讯信息: 资讯id,资讯分,资讯标题,宠物分,宠物体型,资讯内容,发布时间 资讯分: 分id,分名称 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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