首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

高分求比较好的类设计(讨论帖)解决办法

2012-03-07 
高分求比较好的类设计(讨论帖)主程序类:TMain Class(TObject)数据操作类A:TA Class(TObject)数据操

高分求比较好的类设计(讨论帖)
主程序类: 
TMain = Class(TObject);

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

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

函数类C
TC = Class(TObject);

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

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


其中 A实例 和B实例的各自的数据成员会有很多交流,而这些交流是通过类C里的成员函数来实现的。
比如A中 有个成员 FA.a 的数据,是要通过FB 中的一个数据,经过计算得来,而这个计算任务,我们让类C的实例来做。
请问下,我的这个A,B,C三个类,该怎么设计,才比较好呢???


[解决办法]
顶下
[解决办法]
好像需求还是很模糊。

如果就按你这样说的话,象这样就好了,然后分清三个对象的职责是什么,最后由外部来完成它们的调用。
[解决办法]
类中数据成员表示类对象的状态 而方法则表示改变类状态的操作 如果你的C类单纯将一堆函数封装起来那这个类没任何意义

[解决办法]
你的需求是什么?总觉得这是些小事,就如2L说的,外部调用不就行了?
[解决办法]
遵循一个原则:高内聚、低耦合。建议你看一本书:《Applying UML and Patterns》
[解决办法]
B最好做个单实例类,专门用于存储数据和数据相关比较紧密的函数,供A类调用
C也做成单实例类或者函数都做成类函数,提供公用计算方法
[解决办法]
帮ding ~!
[解决办法]
C类设计成父类,A类B类继承C类。


[解决办法]
我得想法

数据库操作类A,B作为第三层,断开与主界面的联系
类C作为第二层,应用层,负责主界面与第三层数据层的通信
主界面作为第一层,表现层,负责向C发送请求,要数据
[解决办法]
1.无论你怎么设计,肯定会有一个全局内容,你可以把这些全局的变量和处理方法封装成一个类,程序运行的时候创建一个实例(参考Single模式)
2.数据库可以先定义一个接口或者是抽象类,看具体情况,通过接口引用和具体实现相分离。(参考桥接模式)
3.数据库连接和传输部分也可以创建一个抽象类,然后再创建一个管理类来管理这些链接和传输,这样就可以扩展成你封装的任意连接了(三层,两层,还是其他方式就可以随意扩展了)。
4.不建议使用函数类c,一方面认为没有必要,而且你要知道使用类的效率远没有函数的效率高。但你可以封装在一个命名空间中,这样方便于管理。多个分类就放在不同的单元里就好了。函数过程与类的应用区别是功能单一,实现起来比较简单(相对于类来说)。不一定要迷恋于面向对象的设计。怎样方便,怎样容易扩展,怎样容易低耦合高内聚,就怎样实现他。
5.具体的业务部分你可以封装在不同的类中,当然,界面最好和具体的业务分开。方便于扩展!

[解决办法]
探讨
1.无论你怎么设计,肯定会有一个全局内容,你可以把这些全局的变量和处理方法封装成一个类,程序运行的时候创建一个实例(参考Single模式)
2.数据库可以先定义一个接口或者是抽象类,看具体情况,通过接口引用和具体实现相分离。(参考桥接模式)
3.数据库连接和传输部分也可以创建一个抽象类,然后再创建一个管理类来管理这些链接和传输,这样就可以扩展成你封装的任意连接了(三层,两层,还是其他方式就可以随意扩展了)。
4.不建议使用函数类c,一方面认为没有必要,而且你要知道使用类的效率远没有函数的效率高。但你可以封装在一个命名空间中,这样方便于管理。多个分类就放在不同的单元里就好了。函数过程与类的应用区别是功能单一,实现起来比较简单(相对于类来说)。不一定要迷恋于面向对象的设计。怎样方便,怎样容易扩展,怎样容易低耦合高内聚,就怎样实现他。
5.具体的业务部分你可以封装在不同的类中,当然,界面最好和具体的业务分开。方便于扩展!


[解决办法]
顶下
[解决办法]
顶下
[解决办法]
C可以隐含在B中,也将其可以通过参数的形式传递。
TC.js(A的实例)
或者
TC
private
a:TA;
public
procedure JS;
END
B最好做参数的形式让A能够调用。
[解决办法]
关注中。。。。。
[解决办法]
学习下设计
[解决办法]

------解决方案--------------------


学习了啊,哈哈
[解决办法]
luguo
[解决办法]
学习下设计,dinging
[解决办法]
顶...
[解决办法]

[解决办法]
近段没空,有空可以聊一下。最好先看一下设计模式
[解决办法]
学习了...没有实际例子 似乎理解不了...
脑袋 不够抽象..
[解决办法]


[解决办法]
路过~
[解决办法]
1 如果A, B, C已经存在了,不能改变 ,可以考虑使用Adapter模式
2 如果A, B, C可以改变,可以考虑重构.
[解决办法]
这都推荐了?又没讨论又没结果,楼主又没表达清楚具体的东西。不会是没东西推荐了吧。。。
[解决办法]
10楼说的感觉不错。
[解决办法]
帮顶.exe
[解决办法]
不错
[解决办法]
这完全要根据业务情况来确定。
[解决办法]
我就只是路过的而已,我刚开始接触,不懂...
[解决办法]
我不懂哈
想学学
[解决办法]
C类的计算函数应该拆分放到A类和B类里,如不能修改代码,可使用装饰器模式重建A/B类
[解决办法]
学习
[解决办法]
十楼分析的挺透彻 说的挺中肯的
[解决办法]
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完全隔離)

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


[解决办法]
化繁为简。。。
[解决办法]
UP
[解决办法]
学习了

热点排行