- 浏览: 262438 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
591945028:
[b][b][b][b][b][b][/b][/b][/b][ ...
spring事务 -
Gozs_cs_dn:
根据你的配置, 注解事务似乎无效呢?
spring事务 -
lianchun_zheng:
...
ajax读取json数据 -
yueliancao:
真好 高手
源码编译安装mysql(适用于5.5全部版本) -
jyjava:
Castor,Jaxb,xbean,xStream
spring jdbctemplate 实体属性映射值为null
今天下定决心弄明白je的分页.捣鼓了快一个小时才弄明白规律.
用最笨的方法写了个类好长好长..大家看着不要眼晕..
我就发其中的一段代码了.刚才发现发太多.浏览器直接崩了.. 看来代码写太烂.浏览器也发威
我就不发原版了.太长了有600行了.
大家看代码就可以了.在附件page.java.rar中
我这里就不写了
就是这么个东西.我看着也眼晕.所以就想好好改下(美其名曰:重构)
改成下面的
(重构版)
package com.smallq.util; import java.util.ArrayList; import java.util.List; public class RefactorPage { public static void main(String[] args) { List<String> l = RefactorPage.getPageHref(7, 4, "pageAction.do?page"); for (String s : l) { System.out.println(s); } } /** * 分页链接显示 * * @param totalPage * @param page * @param url * @return */ public static List<String> getPageHref(int totalPage, int page, String url) { List<String> list = new ArrayList<String>(); list.add("<div class='pagination'>"); page = checkOutPage(totalPage, page, url, list); if (totalPage < 7) { outAll(totalPage, page, url, list); } else if (totalPage == 7 || totalPage == 8) { totalPageSevenEight(totalPage, page, url, list); } else { greatThanEight(totalPage, page, url, list); } checkEndPage(totalPage, page, url, list); list.add("</div>"); return list; } private static void checkEndPage(int totalPage, int page, String url, List<String> list) { if (page != totalPage) { list.add(" <a href=" + url + "=" + (page + 1) + " class='next_page' rel='next'>下一页 »</a>"); } else { list.add(" <span class='disabled next_page'>下一页 »</span>"); } } private static int checkOutPage(int totalPage, int page, String url, List<String> list) { if (page < 1) page = 1; if (page > totalPage) page = totalPage; if (page != 1) { list.add("<a href=" + url + "=" + (page - 1) + " class='prev_page' rel='prev start'>« 上一页</a> "); } else { list.add("<span class='disabled prev_page'>« 上一页</span> "); } return page; } private static void greatThanEight(int totalPage, int page, String url, List<String> list) { if (page < 3) { previousTwoPage(page, url, list); addFootPage(totalPage, url, list); } else if (page > totalPage - 2) { addHeadPage(url, list); lastTwoPage(totalPage, page, url, list); } else if (page == 3) { thirdPage(page, url, list); addFootPage(totalPage, url, list); } else if (page == totalPage - 2) { countDownThirdPage(totalPage, page, url, list); } else if (page == 4) { forthPage(page, url, list); addFootPage(totalPage, url, list); } else if (page == totalPage - 3) { addHeadPage(url, list); countDownForthPage(totalPage, page, url, list); } else if (page == 5) { fifthPage(page, url, list); addFootPage(totalPage, url, list); } else if (page == totalPage - 4) { addHeadPage(url, list); countDownFifthPage(totalPage, page, url, list); } else { addHeadPage(url, list); // 中间 list.add("<a href=" + url + "=" + (page - 1) + ">" + (page - 1) + "</a>"); list.add("<span class='current'>" + page + "</span>"); list.add("<a href=" + url + "=" + (page + 1) + ">" + (page + 1) + "</a>"); // 后段 addFootPage(totalPage, url, list); } } private static void totalPageSevenEight(int totalPage, int page, String url, List<String> list) { if (page < 3) { previousTwoPage(page, url, list); addFootPage(totalPage, url, list); } else if (page > totalPage - 2) { addHeadPage(url, list); lastTwoPage(totalPage, page, url, list); } else if (page == 3 && totalPage == 8) { thirdPage(page, url, list); addFootPage(totalPage, url, list); } else if (page == totalPage - 2 && totalPage == 8) { countDownThirdPage(totalPage, page, url, list); } else { outAll(totalPage, page, url, list); } } private static void outAll(int totalPage, int page, String url, List<String> list) { for (int i = 0; i < totalPage; i++) { if (i + 1 == page) { list.add("<span class='current'>" + page + "</span>"); i = i + 1; if (page == totalPage) break; } list.add("<a href=" + url + "=" + (i + 1) + ">" + (i + 1) + "</a>"); } } private static void previousTwoPage(int page, String url, List<String> list) { for (int i = 0; i < 3; i++) { i = iteratorOutPut(page, url, list, i); } } private static void lastTwoPage(int totalPage, int page, String url, List<String> list) { for (int i = totalPage - 3; i < totalPage; i++) { if (i + 1 == page) { list.add("<span class='current'>" + page + "</span>"); i = i + 1; if (page == totalPage) break; } list.add("<a href=" + url + "=" + (i + 1) + ">" + (i + 1) + "</a>"); } } private static void thirdPage(int page, String url, List<String> list) { for (int i = 0; i < 4; i++) { i = iteratorOutPut(page, url, list, i); } } private static void countDownThirdPage(int totalPage, int page, String url, List<String> list) { addHeadPage(url, list); for (int i = totalPage - 4; i < totalPage; i++) { if (i + 1 == page) { list.add("<span class='current'>" + page + "</span>"); i = i + 1; if (page == totalPage) break; } list.add("<a href=" + url + "=" + (i + 1) + ">" + (i + 1) + "</a>"); } } private static void forthPage(int page, String url, List<String> list) { for (int i = 0; i < 5; i++) { i = iteratorOutPut(page, url, list, i); } } private static void countDownForthPage(int totalPage, int page, String url, List<String> list) { for (int i = totalPage - 5; i < totalPage; i++) { if (i + 1 == page) { list.add("<span class='current'>" + page + "</span>"); i = i + 1; if (page == totalPage) break; } list.add("<a href=" + url + "=" + (i + 1) + ">" + (i + 1) + "</a>"); } } private static void countDownFifthPage(int totalPage, int page, String url, List<String> list) { for (int i = totalPage - 6; i < totalPage; i++) { if (i + 1 == page) { list.add("<span class='current'>" + page + "</span>"); i = i + 1; if (page == totalPage) break; } list.add("<a href=" + url + "=" + (i + 1) + ">" + (i + 1) + "</a>"); } } private static void fifthPage(int page, String url, List<String> list) { for (int i = 0; i < 6; i++) { i = iteratorOutPut(page, url, list, i); } } private static int iteratorOutPut(int page, String url, List<String> list, int i) { while (i + 1 == page) { list.add("<span class='current'>" + page + "</span>"); i = i + 1; } list.add("<a href=" + url + "=" + (i + 1) + " rel='next'>" + (i + 1) + "</a>"); return i; } private static void addFootPage(int totalPage, String url, List<String> list) { list.add(" <span class='gap'>…</span> "); list.add("<a href=" + url + "=" + (totalPage - 1) + ">" + (totalPage - 1) + "</a>"); list.add("<a href=" + url + "=" + (totalPage) + ">" + (totalPage) + "</a>"); } private static void addHeadPage(String url, List<String> list) { list.add("<a href=" + url + "=" + (1) + ">" + (1) + "</a>"); list.add("<a href=" + url + "=" + (2) + ">" + (2) + "</a>"); list.add(" <span class='gap'>…</span> "); } }
上面是重构过的.代码行数减少一半有
我想问下.还能继续go不?
还有我的分页想法就貌似不对.
大家看看
下面是个例子.里面有两个类.一个是原始的.一个是重构过的..
貌似是过度设计了.能改善算法的.尽量改改.怎么重构?怎么就叫过度设计了.这个度怎么把握?
看着代码减少了.看着更晕了..
- PageTest.rar (10.7 KB)
- 描述: 完整例子.放到tomcat目录下可运行
- 下载次数: 12
- Page.java.rar (1.2 KB)
- 描述: 原始类
- 下载次数: 11
- RefactorPage.java.rar (1.3 KB)
- 描述: 经过第一次重构的类,上面发的是又改造的
- 下载次数: 14
发表评论
-
spring jdbctemplate 实体属性映射值为null
2009-12-17 23:50 11996今天在做mysql和derby数 ... -
ajoo经典文章.你擦了吗
2009-12-16 22:39 1724这是从百度找到的.原文已经被删除了..悲剧.可惜那么多 ... -
给C++初学者的忠告
2009-10-27 20:41 1198原文:http://love21keai.iteye.com/ ... -
第一次出现java bug
2009-10-27 16:18 1688用了2年多java了.还是第一次出现直接崩溃的系统bug. ... -
jdk1.5增强的for循环
2009-08-20 00:07 3737jkd1.5提供了对for循环的加强。在特定的场合很大的简化了 ... -
java反射浅析
2009-08-19 23:59 1251在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属 ... -
==和eauals的区别
2009-08-18 20:36 1994一直对==和equals方法判断相等很模糊。今天又仔细看了下。 ... -
两种转码方式的区别
2009-07-18 11:58 1849这是张孝祥老师的java就业培训视频教程里面的一道题目(有所变 ... -
仿je分页标签显示
2009-07-07 16:26 1098这几天一直在看je的分页显示觉得做的非常不错.很合理人性化.于 ... -
java自动装箱拆箱
2009-07-02 19:27 1914java的自动置入和取出对原生类型进行了自动转换 看如下代码 ... -
泛型(Generics)简说
2009-07-02 15:14 2424泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得 ... -
MD5加密类
2009-05-20 16:45 64package com.qihang.street.utils ... -
JDBC
2009-04-23 17:18 152本帖已被删除 -
java控制字符不能输入特殊字符和空格
2009-02-25 16:37 692import java.util.regex.Patter ... -
Javamail操作指南
2009-03-19 13:14 126import java.util.*; import jav ... -
Java实现给图片添加水印
2009-03-19 13:18 1368import java.awt.*; import j ... -
java读取远程url图片,得到宽高
2009-03-27 16:04 12848import java.awt.image.BufferedI ...
相关推荐
标题中的"【EMD重构】.rar"指的是包含EMD重构过程的压缩文件,而"EMD重构函数"是指在处理EMD分解后的IMF分量时使用的特定函数。"IMF变量重构"则是指将分解得到的各个IMF重新组合成原始信号的过程。"tomorrowi4n"可能...
### 重构(Refactoring):改善现有代码的设计 #### 一、重构概念解析 重构(Refactoring)是一种软件工程中的重要技术,它指的是在不改变软件系统外部行为的前提下,通过改进其内部结构来提高代码质量的过程。重构...
《重构:改善既有代码设计》是一本由Martin Fowler所著的经典IT著作,它详细阐述了在软件开发过程中如何通过重构来提升代码质量、可读性和维护性。重构是一种系统性的方法,旨在不改变软件外在行为的前提下,改进其...
资源名:用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构 资源类型:matlab项目全套源码 源码介绍:用于信号的分解、降噪和重构,实现故障诊断 源码说明: 全部项目源码都是经过...
在本文中,我们将深入探讨基于Matlab的压缩感知(Compressive Sensing,简称CS)重构算法的实现。压缩感知是一种理论先进的信号处理方法,它允许我们以远低于奈奎斯特定理所要求的采样率捕获信号,并能恢复原始信号...
三维重构 可以检测有效的系统缺陷,进行缺陷的定位,缺陷体积的测量等,如何进行三维重构(3D reconstuction)的输入是各种三维以下的数据,比如纯二维的RGB图像(序列)、带有深度信息的RGBD数据等,出来的是三维...
在电力系统领域,33节点系统重构是一种针对配电网优化设计的方法,主要应用于小型到中型的配电网络。本文将详细解析33节点系统重构的实现过程及其在IEEE-33节点配电网中的应用。 首先,33节点系统通常代表一个具有...
重构是软件开发过程中的一个重要环节,它关注于改善已有代码的设计,以提高代码的可读性和维护性,同时保持原有功能不变。通过重构,程序员能够更有效地管理代码,提升开发效率,减少错误,并促进团队成员之间的沟通...
配电网重构是电力系统领域中的一个重要研究课题,它涉及到电力系统的稳定运行与经济效率。配电网重构的目标是在满足一系列约束条件下,通过改变开关状态,优化网络结构,以达到提高供电可靠性、降低运营成本、改善...
《重构与模式》是软件开发领域的一本经典著作,作者为Addison-Wesley Professional出版社。这本书主要探讨了如何在实际编程过程中有效地进行重构,并将其与设计模式相结合,以提升软件质量和可维护性。 重构是一种...
在这个主题中,"POD.rar_POD 重构_POD正交分解_we75t_本征正交分解_流场重构" 提到了一种名为“主成分分析”(Principal Component Analysis,PCA)在流体力学中的应用,通常称为“正交分解”(Proper Orthogonal ...
《重构——改善既有代码设计》是软件工程领域的一部经典著作,作者Martin Fowler,该书与《设计模式》被并称为软件工程的双雄。《重构》一书的主旨在于向读者展示重构的过程与方法,即通过一系列小的、有步骤的改变...
一直很喜欢重构这本书,但是由于自己记性不太好,书看过之后其中的方法总是记不住,于是想如果有电子版的重构书就好了,工作中遇到重构的问题可以随时打开查阅。在网上搜索了许久,发现重构这本书有英文chm版本的,...
本文将深入探讨如何利用ZYNQ实现PL动态重构这一关键技术,旨在提升系统的灵活性和效率。 动态重构是指在系统运行过程中,根据需求变化对硬件结构进行重新配置,从而实现不同功能或者优化性能。在ZYNQ平台上,这种...
信号的小波分解与重构原理 小波分解是一种信号处理技术,它可以将信号分解成多个分量,每个分量对应一个特定的频率范围。小波分解的主要应用包括信号压缩、去噪、特征提取等。在小波分解中,我们通常使用离散小波...
### 重构:改善既有代码的设计 #### 书籍概述与核心价值 《重构:改善既有代码的设计》这本书由Martin Fowler撰写,是一本关于软件工程领域的经典著作。它详细介绍了如何通过一系列小步骤对现有代码进行改进,进而...
重构.pdf_电子版_pdf版 本资源主要讲解了软件设计中的重构(Refactoring)概念,并提供了一个实际案例来演示如何通过重构来改进代码结构。 什么是重构? 重构是软件设计中一种重要的技术,它的目的是为了使代码变...