java代码的设计和解读

简介: java代码的设计和解读

一、目的
1、为了使程序员编写的代码更加的简洁,使人阅读起来更加流畅

2、将运算代码与界面代码完全分离开来,利于团队开发,提高团队之间的工作效率
3、 在很短的时间内可以替换整个站点的外观;
4、使程序员可以抽象编程,而无须接触HTML代码;
5、可以重复利用以前的模板。
回到顶部(go to top)
二、示例
  引用前一篇的记忆曲线的JSP文件
1、未进行分离的代码
复制代码
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%@ page import = "java.util.Date , java.text." %>
4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5


6

7

8

9
10

11

12

13
天数
14
新学习
15
复习前1天
16
复习前2天
17
复习前4天
18
复习前7天
19
复习前15天
20
21 <%
22 Date today=new java.util.Date();//向上转型
23 SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
24
25 int group=72;
26 int days=group+15;
27 for(int i=0;igroup){
53 task2=(i+1)+"";
54 }
55 else{
56 task2=i+"";
57 }
58 //求算任务3
59 if(i<=(0+1)||(i-1)>=(group+1)){
60 task3="--";
61 }
62 else{
63 task3=(i-1)+"";
64 }
65 //求算任务4
66 if((i-3)<=0||(i-3)>=(group+1)){
67 task4="--";
68
69 }else{
70 task4=(i-3)+"";
71 }
72 //求算任务5
73 if((i-6)<=0||(i-3)>=(group+1)){
74 task5="--";
75
76 }else{
77 task5=(i-6)+"";
78 }
79 //求算任务6
80 if((i-14)<=0||(i-14)>=(group+1)){
81 task6="--";
82
83 }else{
84 task6=(i-14)+"";
85 }
86
87 %>
88

89
<%=day %>
90
<%=task1%>
91
<%=task2 %>
92
<%=task3 %>
93
<%=task4 %>
94
<%=task5 %>
95
<%=task6 %>
96
97 <%
98 }
99 %>
100
101
102
由代码可知:在JSP的代码界面中掺杂了大部分的运算代码,造成了代码的凌乱与耦合,今天的学习目的就是将这段JSP中的运算代码给拿出来,保证JSP代码的纯净
2、进行代码的分离
2.1、纯净化JSP代码
  即将JSP中无关页面布局的代码除去,保留有关页面布局的相关代码,以达到JSP的纯净模式
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%@ page import="java.util.
,java.text.SimpleDateFormat,web.MemTask,web.MemTaskImpl,entity.DayTask" %>
4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd">
5
6
7
8
9
10
11

12
13 日期
14 新学习
15 复习前1课
16 复习前2课
17 复习前4课
18 复习前7课
19 复习前15课
20
21
22 <%=item.getDay()%>
23 <%=item.getTask1()%>
24 <%=item.getTask2()%>
25 <%=item.getTask3()%>
26 <%=item.getTask4()%>
27 <%=item.getTask5()%>
28 <%=item.getTask6()%>
29
30
31
32

2.2、对方法进行封装
先在src中创建名为DayTask的Java文件,并在其中编写定义实现类和实现方法的代码
代码如下:
1 package entity;
2
3 public class DayTask {
4 private String day;
5 private String task1;
6 private String task2;
7 private String task3;
8 private String task4;
9 private String task5;
10 private String task6;
11 public String getDay(){
12 return day;
13 }
14 public void setDay(String day) {
15 this.day = day;
16 }
17 public String getTask1() {
18 return task1;
19 }
20 public void setTask1(String task1) {
21 this.task1 = task1;
22 }
23 public String getTask2() {
24 return task2;
25 }
26 public void setTask2(String task2) {
27 this.task2 = task2;
28 }
29 public String getTask3() {
30 return task3;
31 }
32 public void setTask3(String task3) {
33 this.task3 = task3;
34 }
35 public String getTask4() {
36 return task4;
37 }
38 public void setTask4(String task4) {
39 this.task4 = task4;
40 }
41 public String getTask5() {
42 return task5;
43 }
44 public void setTask5(String task5) {
45 this.task5 = task5;
46 }
47 public String getTask6() {
48 return task6;
49 }
50 public void setTask6(String task6) {
51 this.task6 = task6;
52 }
//代码效果参考:http://0791zd.com/zx/art_5880.html

2.3、设置接口类
在编写代码是要时刻注意对接口的使用:
  1. 从定义中,“接口方法可以在不同的方法被不同的类实现”,说明使用接口能够方便的去扩展,比如你在client中调用了一个接口,以后想用其他的实现,只需要重写一个实现类并扩展工厂就行了。
  2. 可复用性,比如大型项目中,将Hibernate换成Ibatis的时候,可以只需要在Spring中配置实现类就可以替换了。接口属性能够方便的配置。
  3.项目开发人员的分工,当接口定义好后,不同模块的开发人员可以先根据接口的定义开发自己的模块,提高了开发效率
  4.方便早期的设计和以后的扩展。
于是我们需要编写一个接口类MemTask
代码如下:
1 package web;
2 import java.util.List;
3
4 import entity.DayTask;
5
6 public interface MemTask {
7
8 public List getAllTask(int group);
9
10 }
2.4、实现接口类
新建一个MemTaskImpl类文件,该文件中的代码是用来实现MenTask类中的接口,并编写具体的类来实现算法。
3 import java.text.SimpleDateFormat;
4 import java.util.ArrayList;
5 import java.util.Calendar;
6 import java.util.Date;
7 import java.util.GregorianCalendar;
8 import java.util.List;
10 import entity.DayTask;
11
12 public class MemTaskImpl implements MemTask {
13
14 @Override
15 public List getAllTask(int group) {
16 List dayTaskList = new ArrayList();
17
18 Date today = new Date();
19 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
20 // 总次数
21 int days = group + 15;
22 for (int i = 0; i < days; i++) {
23 Calendar calendar = new GregorianCalendar();
24 // 给日历一个初始时间
25 calendar.setTime(today);
26 // 日历翻页
27 calendar.add(Calendar.DATE, i);
28 DayTask dayTask = new DayTask();
29 dayTask.setDay(sdf.format(calendar.getTime()) + " ");
30
31 // 求算任务1
32 if (i <= group - 1) {
33 dayTask.setTask1((i + 1) 2 - 1 + "");
34 } else {
35 dayTask.setTask1("--");
36 }
37
38 // 求算任务2
39 if (i <= 0 || i >= (group + 1)) {
40 dayTask.setTask2("--");
41 } else {
42 dayTask.setTask2(i
2 - 1 + "");
43 }
44
45
46 // 求算任务3
47
48 if ((i - 1) <= 0 || (i - 1) >= (group + 1)) {
49 dayTask.setTask3("--");
50
51 } else {
52 dayTask.setTask3((i - 1) 2 - 1 + "");
53
54 }
55 //求算任务4
56 if ((i-3)<=0||(i-3)>=(group+1)){
57 dayTask.setTask4("--");
58
59 }else{
60 dayTask.setTask4((i-3)
2-1+"");
61
62 }
63 //求算任务5
64 if ((i-6)<=0||(i-6)>=(group+1)){
65 dayTask.setTask5("--");
66
67 }else{
68 dayTask.setTask5((i-6)2-1+"");
69
70 }
71 //求算任务6
72 if ((i-14)<=0||(i-14)>=(group+1)){
73 dayTask.setTask6("--");
74
75 }else{
76 dayTask.setTask6((i-14)
2-1+"");
77
78 }
79 dayTaskList.add(dayTask);
80 }
81
82 return dayTaskList;
83 }
84
85 }
//代码效果参考:http://0791zd.com/bx/art_6509.html

2.5、在JSP界面中成功调用封装的类与方法
21 <%
22 //它的实例创建有2个办法
23 //1.传统的new 对象方法
24 //2.使用ioc注入
25
26 //调用已经封装的方法进行运算
27 MemTask memTask = new MemTaskImpl();
28 List dayTaskList = memTask.getAllTask(20);
29 for (DayTask item:dayTaskList){
30 %>
31


32 <%=item.getDay()%>
33 <%=item.getTask1()%>
34 <%=item.getTask2()%>
35 <%=item.getTask3()%>
36 <%=item.getTask4()%>
37 <%=item.getTask5()%>
38 <%=item.getTask6()%>
39
40<%} %>
41
42
43
相关文章
|
10天前
|
设计模式 Java
Java设计模式:组合模式的介绍及代码演示
组合模式是一种结构型设计模式,用于将多个对象组织成树形结构,并统一处理所有对象。例如,统计公司总人数时,可先统计各部门人数再求和。该模式包括一个通用接口、表示节点的类及其实现类。通过树形结构和节点的通用方法,组合模式使程序更易扩展和维护。
Java设计模式:组合模式的介绍及代码演示
|
1天前
|
Java API 开发者
探索Java中的Lambda表达式:简洁与强大的代码实践
本文深入探讨Java中Lambda表达式的定义、用法及优势,通过实例展示其如何简化代码、提升可读性,并强调在使用中需注意的兼容性和效率问题。Lambda作为Java 8的亮点功能,不仅优化了集合操作,还促进了函数式编程范式的应用,为开发者提供了更灵活的编码方式。
|
1天前
|
Java Linux Python
Linux环境下 代码java调用python出错
Linux环境下 代码java调用python出错
12 3
|
2天前
|
算法 Java
java 概率抽奖代码实现
java 概率抽奖代码实现
|
10天前
|
Java 程序员 API
Java中的Lambda表达式:简化代码的秘密武器
在Java 8中引入的Lambda表达式是一种强大的编程工具,它可以显著简化代码,提高可读性。本文将介绍Lambda表达式的基本概念、优势以及在实际开发中的应用。通过具体示例,您将了解如何使用Lambda表达式来简化集合操作、线程编程和函数式编程。让我们一起探索这一革命性的特性,看看它是如何改变Java编程方式的。
21 4
|
10天前
|
Java 开发者
探索Java中的Lambda表达式:简化你的代码
【8月更文挑战第49天】在Java 8的发布中,Lambda表达式无疑是最令人兴奋的新特性之一。它不仅为Java开发者提供了一种更加简洁、灵活的编程方式,而且还极大地提高了代码的可读性和开发效率。本文将通过实际代码示例,展示如何利用Lambda表达式优化和重构Java代码,让你的编程之旅更加轻松愉快。
|
15天前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
46 6
|
21天前
|
存储 Java 开发者
【Java新纪元启航】JDK 22:解锁未命名变量与模式,让代码更简洁,思维更自由!
【9月更文挑战第7天】JDK 22带来的未命名变量与模式匹配的结合,是Java编程语言发展历程中的一个重要里程碑。它不仅简化了代码,提高了开发效率,更重要的是,它激发了我们对Java编程的新思考,让我们有机会以更加自由、更加创造性的方式解决问题。随着Java生态系统的不断演进,我们有理由相信,未来的Java将更加灵活、更加强大,为开发者们提供更加广阔的舞台。让我们携手并进,共同迎接Java新纪元的到来!
45 11
|
13天前
|
Java 开发者
探索Java中的Lambda表达式:简化代码,提升效率
【9月更文挑战第14天】本文旨在揭示Java 8中引入的Lambda表达式如何革新了我们编写和管理代码的方式。通过简洁明了的语言和直观的代码示例,我们将一起走进Lambda表达式的世界,了解其基本概念、语法结构以及在实际编程中的应用。文章不仅会展示Lambda表达式的魅力所在,还会指导读者如何在日常工作中有效利用这一特性,以提高编码效率和程序可读性。
|
19天前
|
并行计算 Java 开发者
探索Java中的Lambda表达式:简化代码,提升效率
Lambda表达式在Java 8中引入,旨在简化集合操作和并行计算。本文将通过浅显易懂的语言,带你了解Lambda表达式的基本概念、语法结构,并通过实例展示如何在Java项目中应用Lambda表达式来优化代码,提高开发效率。我们将一起探讨这一现代编程工具如何改变我们的Java编码方式,并思考它对程序设计哲学的影响。