动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Delphi教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Delphi教程 ]的信息

本月文章推荐
.我写的采用csv格式将数据转换为e.
.DELPHI与INTERNET2.
.选择一个网路邻居.
.Delphi数据库编程教程(七).
.基本图象处理代码(3).
.Delphi+Word解决方案参考.
.Delphi与Word例1.
.delphi代码标准文档.
.改良版TStringList类.
.PL0编译器TurboPascal版再现.
.FAQ:如何访问WebBrowser的滚动条.
.通用Delphi数据库输入控件DBPane.
.调用DLL文件中的FORM.
.在winnt以上版本中对打印机纸张的.
.生成BIG5字符集所有字符.
.扫雷程序思想讲解.
.用Delphi2005和DUnit搭建敏捷开发.
.Delphi6的新特性[翻译].
.如何在注册表中注册BDE.
.TManagedDataSet和DataSetPool的.

组件开发方式

发表日期:2006-2-4 |


在Te2和IWS的开发过程中,我终于体会到了采用组件开发的方式给我带来的非凡的快乐巨大的痛苦,一方面,我可以简单的拖拉几个组件放在Form或者DataModule上,设置一下属性,接着我就可以按F9来Run了。另一方面,我常常陷于莫名其妙的AV错误中,一不小心就会把我的Delphi搞崩溃。但是,只要我们搞清楚了创建组件的一些基本方法,那么就可以小心的避开组件开发过程中的种种陷阱。在阅读这篇文章之前,我建议大家可以先读:

  1. Delphi爱好者上的:Form Class To Component,这篇文档告诉我们创建组件的基本方法
  2. Creating Components Dynamically,这篇文档告诉我们使用组件的正确方法
  3. Dynamic Component Creation Gotcha (Don't Do This),这篇文档告诉我们使用组件的负作用
  4. Reuse through Inheritance and Composition,这篇文档告诉我们如何设计组件
  5. 10 guidelines to help you design for reuse,这篇文档也告诉我们设计组件一些可以操作的办法

我写这篇文章的目的是希望我们能从过去的RAD开发方式中转变成基于组件的开发方式,但是这篇文档并不告诉大家如何写组件,及写组件的一些方法,因为那几乎可以写成一本书了。

为什么用组件?

现在开发领域中比较热门的话题是OO及基于OO的更加偏重于问题域的Patterns,在我刚刚开始使用Delphi的时,我常常自问:我采用了OOP吗?让我们来看看使用Delphi 开发的标准方式:往Form或DataModule上放置几个组件,写几个事件,按F9 Run 。是的,RAD令我愉快的编程,但是它不会导致我认真设计

  • 开始阶段代码并不会复杂,好多时候我们会把一些通用的代码拷贝到程序的各个地方,而且这些代码看起来好象不能复用,最简单的例子就是:在某个Action的Execute事件中我创建一个Query,执行一个SQL,在另一个Action的Execute事件中我又会创建一个Query去执行另一个SQL,这里有没有什么办法来抽象创建Query的过程
  • Object Inspector非常好用,我可以非常容易的写事件处理逻辑,但是这会把逻辑和Form或DataModule紧紧绑定。尽管把业务逻辑写在DataModule中是Delphi推荐的方式,但它的复用程度并不怎么好,想想在一个DataModule中放置几十个数据集的情况,你还能说这个DataModule可以复用吗

所以,我推荐使用基于组件的编程,Why,让我们看看Form Class To Component中写到使用组件的三个优点:

  1. Delphi有一套组件的动态创建和销毁的机制,反之,TObject的派生类必须显式的在代码中创建、使用、销毁
  2. 你可以在设计时设置属性,不要小看这个优点,我们可以开发出属性编辑器,可以让用户只能选择合法的属性值
  3. 对于可视组件,你可以在设计时设置组件的位置和大小

这只是显而易见的优点,它只是表象,隐藏在这些优点下面的精髓是:OOP。Delphi提供了一个组件框架,所以当你开始试图通过写组件来简化编程的时候,你就会不知不觉的采用OO的编程方法。最为重要的是VCL框架采用了许多让程序易于重用的设计模式:

  1. Composite 模式:当你在Form上放置各种组件,组成一个新的TForm的派生类,你用到了Composite 模式
  2. Builder 模式:当你创建你定义的Form时,你会使用Builder模式,通常Builder模式创建的对象是由Composite模式组成的。
  3. Template Method 模式:这个模式太普遍了,任何一个从TComponent的派生的类,都会使用该模式!
  4. Mediator 模式 :当你写事件时,你用的正是Mediator 模式,注意了Mediator 模式中的缺点就是:它会使中介者为一个庞然大物
  5. Singleton 模式:尽管没有任何机制阻止我们创建多个TApplicaion对象,但是我们知道任何一个GUI程序只能有一个TApplcaiton对象,那就是全局变量Applicaion

当你开发组件时,你已经开始使用OOP,并且将会使用上面的五种模式。至少从理论上已经保证你的代码是可以重用的,你的程序是易于更改从而适应更多的需求。


Mail To:Me

上一篇:WinAPI编程关闭QQ登录窗体 人气:4102
下一篇:用Ehlib二次开发报表打印程序,实现财务凭证的打印(三) 人气:3637
浏览全部Delphi的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-6 Movie34电影搜索引擎 v3.0
2008-9-6 wap2.0仿帝国建站喜用 v2.0
2008-9-6 免费人才招聘网 宽屏版 v3.01
2008-9-6 喜喔喔视频采集程序 v1.0 beta
2008-9-6 ASP客户管理系统
2008-9-6 主流驿站中秋祝福程序
2008-9-6 php实现msn协议的类
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号