界面代码和功能代码分离示例 ( 积分: 200 )

  • 主题发起人 主题发起人 lanyaoshi
  • 开始时间 开始时间
如果是主从表的界面如何做呢?
 
呵呵,主从表也得看你如何抽象对象的,对主从表的操作应该是在数据层吧?界面还是一样的 .. 因为传到表现层的只是对象
 
本人认为 做数据库时,由于项目不是一个,把每个项目的窗体放在BPL里,与主程序物理隔离,比较好管理,但是每个窗体呢,窗体界面与业务怎么管理比较方便呢,这个就看怎么方便怎么使了。我认为所做的一切,都是为了以后程序更加好维护,更加让人简单易懂。
 
提点不同的看法,
Delphi之所以有如此用户群,可能很重要的一点就是RAD吧?OO的最终目的也是为了降低程序的复杂性和,但如果我们在使用DELPHI时为了OO而OO,反而把Delphi的RAD给扔了,是否有点得不偿失呢?
其实我们在实际的项目开发过程中能真正在几个不同的项目之间共用Dll的情况是很少的(也许本人水平有限),而至于数据与界面的分离,好象也没有什么项目可以做到Update而不用重新Build Project的(别告诉我说数据的更新也算数界分离啊)。
因此个人认为,OO也罢RAD也好,只要是可以让项目早日Over的就是好方法。如果要真正的OOP,用Java/VC++吧!在Delphi中使用OO不是不可以,只是个人认为有时反而增加了项目的复杂度,有点勉强罢了。
纯属个人偏见。呵呵!
http://xieyunc.blog.163.com/
 
delphi开发时使用oo的思想,在团队开发、产品维护、产品定制、重构等等时就能看到益处了。RED的最终结果不一定很好,亲身经历... ...
建议OO和单元测试
 
同意 xieyunc的观点!

"我还有一个疑问请大家帮忙看看,数据定义类TUser的属性ID,UserName,Sex,Age与数据库中表User的字段是一一对应的,字段少时也许好办,如字段有很多,如50多个,是否每一个字段都要封装为类的属性呢?如果全部封装,有些时候我们只想获取其中某些字段的值,如只想获取UserName,但类TUser返回了所有的字段,当数据量大时效率应该会比较低了,应该如何解决一个难题呢?是否又要定义另一个类TUser2,它的属性只包括UserName,但这样一样,与表User相关的会不会要定义很多类呢。 "

to lanyaoshi:
数据映射问题,可以去找个OR映射工具,但好像Delphi这方面的工具不成熟。如果你没有找到这样的工具工作量可想而之。而且你这种方式根本就体现不了OO的特征(抽象、继承、多态等)。因为你只是进行简单的数据映射。

数据量问题,采用延时加载等方法进行控制。

还有自动单元测试工具、UML、敏捷开发方法等OO相关的工具和方法。

可以考虑Frame、窗体继承等方式;虽然UI和数据访问耦合,但效率比你的方式高。而且数据加载、数据关联等一系列问题可以借助数据集实现。

PS:偶也是OO的菜鸟,还未入门。以上纯属个人意见! 飘过...
 
参考的朋友越来越多了,欢迎多提宝贵意见及不同见解,代码在盒了可以下载了:http://www.2ccc.com/article.asp?articleid=3908
 
基本同意天使鬼差的观点
 
To 天使鬼差
如果要做到数据和界面分离,个人认为只要做到刘艺的《Delphi面向对象编程思想》中的8.2 界面和业务分离的演化实例中的8.2.2“界面和业务的逻辑分离”就差不多了,而至于8.2.3的“界面和业务的物理分离”,不是不好,只是对于一个小型的团队或者说对于一个业务不算太过复杂或者DB不是换来换去(我想客户不太会今年用MSSQL明年用ORCLE后年又用DB2吧)的项目来说也许有点“过度设计”了,反而增添了项目的复杂度。
当然对于一个业务类型非常散漫的项目来说界面和业务的物理分离就很有必要了。像如果我们要设计一个类似数据采集之类的仿真环境系统,界面和业务就必须物理分离,否则像我们本帖所讨论的那样了:“小样,早说过要分离吧!!??。。。。。”
 
To xieyunc
我个人认为,RAD和面向对象开发效率一样的

RAD前期开发快,后期维护太难,我想大家都有这样的体会吧(给前人的代码做维护和升级超级痛苦)

OO则重视前期规划,可以说你没有好的规划就无法做面向对象。VCL的架构到了有些控件的设计已经继承了7。8个层次了,没有好的规划,怎么能做到?
但是前期工作做好了,后面我们就容易了,也能实现前人给我们铺好路的RAD
比如我们从一个类,稍微修改就继承得到一个全新的类
所以我认为OO是前期开发不易,扩充和修改容易

所以就看你的实际需要了,想开始累还是以后累。
如果可能,建议还是使用OO,毕竟这是趋势

当然,现在有了新的还没有经过全面普及的趋势——SOA
 
to xieyunc:
《Delphi面向对象编程思想》这本书内容记不太清楚了,感觉这本书在讲述面向对象的语法解释得挺到位的(封装、多态、抽象、继承等),OOA、分层架构方面比较单薄。
如果直接把那书上的"界面和业务的逻辑分离"思想移动项目中应用好像有点牵强。或许我理解能力有限,没能体会。

偶的能力也没有达到很好的把UI-业务逻辑-数据访问分离。
用了折中的方式,简单的逻辑如判断是否为空,是否重复等放在界面的数据集中;
如有SQL语句用定义短语常量分模块定义一个单元,还有少许重要的业务逻辑放在这个单元里。增删改等用窗体继承实现,这样下来界面的代码不多。

以上纯属个人愚见!

下面是一高手写的笔记,偶看后受益良多..
<<关于一个在DELPHI6下简单数据库界面设计方案>>
http://www.delphibbs.com/keylife/iblog_show.asp?xid=25663
http://www.delphibbs.com/keylife/iblog_show.asp?xid=26183
 
to 天使鬼差:
"用了折中的方式,简单的逻辑如判断是否为空,是否重复等放在界面的数据集中"这句如何理解,能否说详细一些?
 
mark!我也写过,那会是参照李维的书写的,听别人谈过,项目大的时候确实需要用这个思想的,否则很难完成的.上次弄过没弄起来,过两天把以前的代码也贴一下,呵呵!
 
to lanyaoshi:
推荐你去看Martin的<<企业应用架构模式>>,你的许多疑问都可以找到答案。
 
找来看看,谢谢呀。
 
呵呵,向大家学习了!
 
希望这个贴不要沉
学习一下:我的QQ:421523593
向楼主学习!!!
 
嘿,可惜我还没达到搂住的境界啊,只能向各位多多学习了!能和楼主交个朋友么?
我的QQ:389191750
 
后退
顶部