眾所周知,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、當前的版本還沒有提供針對某列進行數據排序的功 能。
源碼如下:
//--------------------------------------------------------------- --------------- // // 產品名稱: 成曉旭的個人軟件Delphi源碼庫 // 產品版本: CXXSoft delphi code source lib 1.0 // 模塊名稱: Delphi之ListView顯示控制類---應用層:Soft socket類定義單元 // 模塊描述: // 單元文件: unLVSoftSocket.pas-->unLVQuickSocket.pas // 開發作者: 成曉旭 // 備注: 任何人使用此文件時,請保留此段自述文件,謝謝! // 開發