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

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三个类,该怎么设计,才比较好呢???
...全文
706 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)

16,748

社区成员

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

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