數據分頁顯示是一項挺煩人的工作,涉及到數據來源,數據生成,數據顯示這幾個方面。數據有可能是從任意地方以任意方式獲取到的,而且獲取到的數據又有可能是經過了任意的方式處理之后,再以任意的方式顯示給最終用戶。
這其中的一連串的“任意”就已經足夠讓人頭疼了,我們現在要做的就是做出一個能一勞永逸的解決這一連串的問題的關于分頁問題的設計。
首先要明確的就是:這只是一個關于解決分頁問題的設計思想,不會提供一份具體實現這個設計的代碼。
在開始之前,我們要先做一個假設:對數據分頁的最終顯示部分已經有具體的解決方案,并對其中的部分代碼做一些改造,使其可以接受實現了IView接口的對象。
一、我們需要如下的接口:
二、針對 IView 并結合已經存在的具體的數據分頁顯示部分的代碼實現的一個抽象類
三、按照具體的數據來源方式實現AbstractViewTemplate抽象類
四、整體部分的結構如下所示
數顯示部分的具體實現_3 à IView |à AbstractViewTemplate_3
數據顯示部分的具體實現_2 à IView |à AbstractViewTemplate_2
數據顯示部分的具體實現_1 à IView |à AbstractViewTemplate_1
數據顯示部分的具體實現 à IView |à AbstractViewTemplate|àViewTemplate_3
|à ViewTemplate_2
|à ViewTemplate_1
|à ViewTemplate
這樣就通過策略模式和模板模式的結合,將數據顯示、數據生成、數據來源三部分完全分開,并做到了重用和簡化開發。
每種數據顯示部分的具體實現,只需要實現一個針對其實現的AbstractViewTemplate抽象類即可。在之后的具體的業務開發過程中,關系的只是ViewTemplate部分中的兩個方法, 只需要針對業務的具體需求,繼承AbstractViewTemplate實現一個類似ViewTemplate的類即可。最終在AbstractViewTemplate中通過createTable()方法將展現所需要的數據傳送給數據顯示部分。
snoics