数据分页显示是一项挺烦人的工作,涉及到数据来源,数据生成,数据显示这几个方面。数据有可能是从任意地方以任意方式获取到的,而且获取到的数据又有可能是经过了任意的方式处理之后,再以任意的方式显示给最终用户。
这其中的一连串的“任意”就已经足够让人头疼了,我们现在要做的就是做出一个能一劳永逸的解决这一连串的问题的关于分页问题的设计。
首先要明确的就是:这只是一个关于解决分页问题的设计思想,不会提供一份具体实现这个设计的代码。
在开始之前,我们要先做一个假设:对数据分页的最终显示部分已经有具体的解决方案,并对其中的部分代码做一些改造,使其可以接受实现了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