首页 / 软件开发 / Delphi / Delphi ListView快速操作通用实现之实现篇
Delphi ListView快速操作通用实现之实现篇2013-12-12 51cto 成晓旭众所周知,Delphi ListView类直接进行Add、Update、Delete操作的速度是比较慢的,尤其是当数据量较 大时,比如数据量达到5000、10000、50000时,速度真是可以说是“慢得惊人”。其实快速操作的方法非常简 单,就当大家都知道了。在本人的工作中,很多项目都用到ListView,并且对速度的响应要求比较高,于是发 生了快速操作ListView的代码散布于多个项目大量模块中的问题,并且,当界面层数据显示要求发生改变时, 自然发生“重复性代码的通用问题”。考虑到对以前版本的兼容性问题,也一直没有引用第三方的成熟组件。 鉴于:“程序中的重复代码最易引发问题,必须消除”的实践经验,自己设计了一个比较通用的解决此类问题 的类结构。当然,远不是什么“通用框架”了(眼下市面上很多人喜欢把自己做的无论什么东西通称为框架)。 在采用此结构的项目中,很容易实现MVC模式,达到业务逻辑与界面显示分离的低级的、基础的要求。小结:应用此类结构实现ListView快速数据操作的优势:1、可以快速实现MVC模式,达到界面 显示与业务逻辑的分离。在Controllor类中,实例化数据显示子类,调用相应方法即可实现显示数据的增、删 、改。2、与原始的快速方法相比,封装了内存数据List,大大简化了List对象的操作(尤其是当有很 多相同或者类似数据要求在不同Form的ListView中显示时),并减少了List的创建、数据操作、释放等操作时 发生错误的可能性。3、简化了多个相同、类似数据显示的控制代码,针对每个份要显示的数据及 ListView,只需要实例化一个显示子类,避免了直接应用原始的快速方法时,控制代码分散在每一个具体Form 类中的问题。4、对显示数据的业务信息份进行了集中,当要求显示的信息发生变化时,只需在数据显 示子类这一个类中更改即可。此通用类结构仍有些不足之处,欢迎有兴趣的朋友继续完善:1 、每个应用层类的外部调用方式非常类似(请参考开发的示例源码),表明,有些通用的方法没有进行更好的抽 象。2、快速访问基类对其子类的行为抽象不充分,导致子类的应用层调用代码非常类似。当初这样 设计的目的是想保持类结构有充分的可扩展性。其实完全可以将基类进行改良:将抽象的虚方法更换成接口, 这样,基类实现的更好的封装,并且更好地满足了“向稳定的方向依赖”和“针对接口编程”的设计原则。这 样,应用层还是要实例化一个自己业务需要的类来实现此接口。但Delphi的接口用起来不像是真正的接口,通 常要从TInterfacedObject等类继承,大大限制了类结构层次的演化。(因为在不支持多继承的语言环境中,如 果还想增加更高层次的抽象就不那么容易了)。3、当前的版本还没有提供针对某列进行数据排序的功 能。