完成了一个物业管理软件,想谈谈自己的一点体会。1.对delphi的看法 2.所谓的三层 3. 简单地应用XML作为数据缓存 4.统领全局的Singleton对象

  • 主题发起人 主题发起人 chinaplate
  • 开始时间 开始时间
写的不错
帮顶
 
写得不错,帮顶,学习中
 
好久没有收藏贴子了,这一篇要收藏一下。[:D]
 
以前在学校学了点皮毛delphi
现在却在搞jsp,java,(struts+hibernate),学习学习
 
写的不错顶
 
不错,值得学习..
 
学习了,顶~~~
 
好久没有花这么长时间看帖子了。所以很想多打几个字。
首先,为什么不加一条, 象用delphi一样用delphi呢?
我记得代码大全中有句话很深刻, 要深入一门语言去编程。
你提的分层我就不多做评说, 我认为你的分层有点牵强,而且没有做到真正的分层。
分层基本要让一个层次不知道关联层次是什么东西,只要知道该层次给它提供了什么样的接口即可。 它只需要调用这些接口即可。

其次你对xml部分的应用我没怎么看明白, 为什么不用xml data binding 生成的接口来实现,当然这样做的效率会差一些。 你管理xml文件的方法为什么写成 全局的? 我认为这样的方式很不严谨。 不知你怎么看。

你的TPM类的封装, 很多字段(Field)直接是public的, 为什么不做成属性? 这样可以控制访问权。 有很多好处。

你的异常封装确实不错, 不过为什么不赋值给application的 showException来处理异常,这样你会省去很多代码, 不用on do 截获了。

在你提的oo方面的纵横思想,确实反应了oo的特性, 但是oo中非常重要的接口概念没有出来, 接口对于分层来说再好不过了。 不过是封装称独立的dll的插件式的结构还是普通的业务层与数据操作层之间的关联, 都是很理想的设计方式。

另外你说迁就了delphi很多地方, 我不太明白。 到底是那些地方?

还有你说的delphi没有静态变量是缺陷, 这个问题, 我的看法不同, 我认为从来都不是缺陷,或许是你习惯于java、c#的 静态变量了。 也或许是我习惯于delphi的精准。
 
谢谢大家,最近有事,一直没来看贴。

谢谢duhai_lee.
>>为什么不加一条, 象用delphi一样用delphi呢?
你这句话确实精彩,再补充上这一句,我就会少挨一些板砖了(尽管我更需要板砖:)
delphi特有的一些功能确实方便而强大,是其它编程环境所不能比拟的。我只是因为我
个人的原因,很少涉及这些特点。

>>你提的分层我就不多做评说, 我认为你的分层有点牵强,而且没有做到真正的分层。
>>分层基本要让一个层次不知道关联层次是什么东西,只要知道该层次给它提供了什么样
>>的接口即可。 它只需要调用这些接口即可。
坦白的说,这个分层,基本上是我闭门造车的结果,很多东西欠推敲。业务层类中
都有一个到存储层的基类,它就是我的调用接口。


>>其次你对xml部分的应用我没怎么看明白, 为什么不用xml data binding 生成的接口来实现,
>>当然这样做的效率会差一些。 你管理xml文件的方法为什么写成全局的?
>>我认为这样的方式很不严谨。 不知你怎么看。
我不太明白你的意思,我只是用xml作为存数据的容器。

>>你的TPM类的封装, 很多字段(Field)直接是public的, 为什么不做成属性?
>>这样可以控制访问权。 有很多好处。
嘿嘿,是我偷懒了:)

>>你的异常封装确实不错, 不过为什么不赋值给application的 showException来处理异常,
>>这样你会省去很多代码, 不用on do 截获了。
我觉得还是自己截获更清晰一些。因为在java中,都处处都不能忘了捕获异常,这应该是个好习惯。

>>在你提的oo方面的纵横思想,确实反应了oo的特性, 但是oo中非常重要的接口概念没有出来,
>>接口对于分层来说再好不过了。 不过是封装称独立的dll的插件式的结构还是普通的业务层与
>>数据操作层之间的关联, 都是很理想的设计方式。
我认同你的意见,面向对象的编程更本质的讲就是面向接口的编程,在这个项目中体现的确实不多。

>>另外你说迁就了delphi很多地方, 我不太明白。 到底是那些地方?
>>还有你说的delphi没有静态变量是缺陷, 这个问题, 我的看法不同, 我认为从来都不是缺陷,
>>或许是你习惯于java、c#的 静态变量了。 也或许是我习惯于delphi的精准。
从delphi整体的角度来说,没有静态变量也似乎无关紧要,但从OO的角度讲,总想少了一些东西。
说几个“迁就”delphi的地方与你讨论。
1.要想办法模拟静态变量。
2.frame中用的控件没法隐藏起来,不得不要把它们裸露给使用者。
3.只能在运行时才知道一个抽象类被create了出来。
4.坦白的说,我不会用delphi来定义一个interface,所以就没用:)
5.一个事件不能有多个处理函数。换成java的话说,一个event不能填加多个listener。
(虽然delphi有变通的方式,看起来也太完美)
6.private的构造函数仍然可以直接调用,这也使的我写的TPM有硬伤,只是我睁一只眼闭一只眼罢了。
所谓的“迁就”,仅仅是就我个人而言从某个角度的看法。
 
好贴!静下来学习学习!!
 
近几年来难得一见的好贴!
我收了。
 
好,很热闹!
1、感觉到把一个不大的物业管理系统搞得这么复杂;
2、似乎是把java的xml data binding生硬的套到delphi上;
如果要研究映射机制可以研究hibernate。
3、为了分层而分层,为了映射而映射。
如果要研究分层,可以研究webwork或spring,
hibernate+webork就是MVC框架!
其实delphi也有相应的工具如remobjects等。

采用(d)com的分布式技术主要一个目的就是要达到瘦客户端的目的!
客户端不包含任何业务逻辑,甚至不包含硬编码的数据合法性校验!
业务逻辑放在后端中间层(如果需要的话)。
至于错误处理也不必全部处理,需要时处理!!!
这就是我们的目标。
 
多人接受答案了。
 
后退
顶部