[高分讨论]关于 Delphi开发 大中型系统 软件的结构设计

Jack_Yin 2008-12-24 12:22:39
最近要搞一个项目,感觉挺大的那种,其实也就是Delphi + SQL Server 管理系统.
俺经验不足,想请教下各位大鸟,该如何组织软件的结构.
因为 软件挺大的,感觉要用到的窗体一定很多,这些窗体该如何组织?是全部放到一起(跟主EXE窗体),还是用DLL,以前用DLL的发现很多问题,还是其他呢,MDI子窗体?

还有写数据库动态连接问题,DataModul控件如何使用,以及一些数据控件的组织.

是不是还设计到一些设计模式问题.

如果要系统学习设计模式软件架构这方面知识,应该看哪些资料呢.

请大家赐教,高分奉送,绝对诚信,不够再加.
...全文
270 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuihan20e 2008-12-30
  • 打赏
  • 举报
回复
建议使用dll+exe

这样便于模块化开发,另外,如果系统比较大,可以一部分一部分的开发,而且只要发布新的DLL,无需更新主程序,也算是插件式的吧
xihii6 2008-12-29
  • 打赏
  • 举报
回复
学习了。
sanguomi 2008-12-29
  • 打赏
  • 举报
回复
来学习下
yjytianti 2008-12-29
  • 打赏
  • 举报
回复
恩,这样的方法很好,最近就一直在改dll模块,的确很方便。
从此不换网名 2008-12-29
  • 打赏
  • 举报
回复
初来学习
hydonlee 2008-12-28
  • 打赏
  • 举报
回复
招一个有相关经验的吧。 这是项目成功很重要的一环。
taste品味 2008-12-27
  • 打赏
  • 举报
回复
我觉得把基类写好,也能省好多事情!
Jack_Yin 2008-12-27
  • 打赏
  • 举报
回复
顶下,继续
sdzeng 2008-12-26
  • 打赏
  • 举报
回复
如果需求够稳定,后续变化少而且系统使用者比较单一的话,做成一个exe未尝不可,毕竟现在硬盘足够便宜
凡是过犹不及,dll分的太多,容易陷到“dll hell”里
一个都不分,程序的部署分发也会是问题

dll可以用在3种场景下:
1、需要复用,比如多个exe有公用部分,
2、需要经常变化的部分
3、需要扩展的部分,比如可以用dll做插件,来扩展系统功能

实际上“大中型”项目,基本上都不会是一个exe,同一个程序营业员和老总都能用,有可能就是子系统划分有问题
Jack_Yin 2008-12-26
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 aykkk 的回复:]
DataModule很好用,你把数据库连接写到里边,其他的窗体即可通过DataModule打开数据库,写大程序建议考虑模块化,一个模块一个功能,不建议使用dll
[/Quote]
谢谢你的建议.
前断时间写的一个程序,用了DLL,结果很多本来正常的控件在DLL中不正常了,BUG一个接一个,都怕了.所以现在不倾向用DLL封装,但是如果不用DLL的话,程序要模块化,该如何封装呢?
byteh 2008-12-26
  • 打赏
  • 举报
回复
有时候,我都想辞职换个环境去学习点新东西! 有感而发,欢迎接分讨论

http://topic.csdn.net/u/20081226/09/f7a2ca50-fee5-4624-a33e-f3025f88b8a1.html
byteh 2008-12-26
  • 打赏
  • 举报
回复
有时候,我都想辞职换个环境去学习点新东西!
Corn1 2008-12-26
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 chenyq2008 的回复:]
其实,我也想知道在主窗体需要放置很多控件(例如几十个,每个基本上都写事件处理函数)的情况下,如何缩小主窗体的代码。
[/Quote]

就像我说的:
比如说,你把一些公用的控件都放在基窗体上,而且在基窗体上实现大部分基础的工作,比如说,对数据库的插入、编辑、删除等等,然后,做具体的业务模块,你就会发现非常方便,像搭积木一样,写少量代码就可以了。
gwhdaxia 2008-12-26
  • 打赏
  • 举报
回复
另外你可以把菜单和业务的dll关联起来,放在数据库或者本地配置文件,如果要设置权限那就放在数据库,

程序只需要读取培植文件,动态加载菜单,因为dll的接口统一起来,所以以后要扩展dll,只要在配置里加上该菜单和相应的dll关联就可以了
gwhdaxia 2008-12-26
  • 打赏
  • 举报
回复
我是支持用dll的,大中型项目如果使用单一的exe,以后维护起来很麻烦的,本来改的小BUG,就会造成全部更新,

数据连接建议你在主程序起来的时候建立连接,然后调用其他的dll的时候把连接传给dll,dll的接口一定要定义成统一的,

DLL建立窗口的时候你可以把连接继续传给窗口,由窗口自动赋给你的数据库控件,

窗口可以划分开,比如说数据显示的DBGrid住窗口,编辑窗口,可以把编辑什么的功能在父窗体里写好, 那么继承下来的需要写的代码相对少一点了

把程序编译成动态的,最后把控件统一发布出去,以后更新起来就会小很多
chenyq2008 2008-12-26
  • 打赏
  • 举报
回复
一些比较独立的业务逻辑封装成DLL还是很好的
chijingde 2008-12-26
  • 打赏
  • 举报
回复
1.针对接口编程
2.优先使用对象组合,而不是类继承
3.发现并封装变化点


这可不是我说的
cqy520cly1110 2008-12-25
  • 打赏
  • 举报
回复
等待学习!
coffee36 2008-12-25
  • 打赏
  • 举报
回复
关注,最近面临同样问题
Corn1 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 starluck 的回复:]
建議不代表不能用。 在乎你的功力夠不夠!!
項目大你做成一個EXE,??? 服了
[/Quote]

问题是楼主的功力够吗?我是结合他的实际情况才给他这个建议的,有错吗?
你服不服是你的事。
再说了,用dll也是要考虑到实际情况的,并不是每个项目,或者说每套框架都适合用dll的。
加载更多回复(24)

16,748

社区成员

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

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