命名规范

包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo

常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG

类:所有单词的首字母大写,如 TestJava

pascal命名法

属性:第一个单词的首字母小写,之后每个单词的首字母大写,如 studentName

camel命名法:驼峰命名法。

方法:第一个单词的首字母小写,之后每个单词的首字母大写,如 getInfo()

Java包的命名规则

util:对应英文utility(实用工具),一般存放工具类,就像java.lang.util包一样存放着各种各样的工具类方便你编程,这里你可以放自己写好的工具类为自己的程序提供方便。

business:一般存放业务类,处理程序业务的功能类就放在这里。

control:一般存放控制类,后台控制的一些类就放在这里,例如J2EE里的Servlet。

dao:对应英文Data Access Object,数据访问对象,一般存放与数据库(文本、Excel等)打交道的类,只关心数据库的增删改查。

用于操作的封装。

vo:对应英文Value Object,值对象,一般存放实体(Model)。

vo表示value object,主要实现数据的封装,常与数据库中一个表或视图相对应。

该类的实现基本上是一个固定的模板,因此很多建模工具(如rose等)能够根据数据库中的表和视图自动生成该文件,此过程称为“反向工程”。

driver:一般存放驱动类,一般显示菜单,调用dao等包中的方法来驱动程序。一般拥有在其中使用方法的主方法。

Object 划分

PO(persistent object)持久对象

PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。PO 中应该不包含任何对数据库的操作。

DO (Domain Object)领域对象

就是从现实世界中抽象出来的有形或无形的业务实体。

TO(Transfer Object)数据传输对象

不同的应用程序之间传输的对象

DTO (Data Transfer Object)数据传输对象

这个概念来源于 J2EE 的设计模式,原来的目的是为了 EJB 的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,泛指用于展示层与服务层之间的数据传输对象。

VO(Value Object)值对象

通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不和表对应,这根据业务的需要。用 new 关键宇创建,由 GC 回收的。

View Object:视图对象;

接受页面传递来的数据,封装对象

将业务处理完成的对象,封装成页面要用的数据

BO(Business Object)业务对象

从业务模型的角度看,见 UML 元件领域模型中的领域对象。封装业务逻辑的 Java 对象,通过调用 DAO 方法,结合 PO、VO 进行业务操作。Business Object:业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个 PO,工作经历对应一个 PO,社会关系对应一个 PO。建立一个对应简历的 BO 对象处理简历,每个 BO 包含这些 PO。这样处理业务逻辑时,我们就可以针对 BO 去处理。

POJO(Plain Ordinary Java Object)简单无规则 Java 对象

传统意义的 Java 对象。就是说在一些 Object/Relation Mapping 工具中,能够做到维护数据库表记录的 Persisent Object 完全是一个符合JavaBean 规范的纯 Java 对象,没有增加别的属性和方法。我的理解就是最基本的 JavaBean,只有属性字段及 setter 和 getter 方法!

POJO 是 DO/DTO/BO/VO 的统称。

DAO(Data Access Object)数据访问对象

是一个 sun 的一个标准 J2EE 设计模式,这个模式中有个接口就是 DAO,它负持久层的操作。为业务层提供接口。此对象用于访问数据库。通常和 PO 结合使用,DAO 中包含了各种数据库的操作方法。通过它的方法,结合 PO 对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合 VO,提供数据库的 CRUD 操作。

SSM框架

pojo:对应英文Plain Ordinary Java Object,简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。其中写普通类属性。

dao:(持久层)xml中写数据库操作

service:(业务层)其中写各种接口还有实现,方法有关操作的可以调用dao中的方法,或 自己写其他服务(如 分页)

controller:(表现层)其中设置请求映射地址,ModelAndView 方法中,将存入的参数进行处理,可使用service方法,用ModelAndView传入页面,对页面进行操作(增加数据、跳转页面等)

页面发送请求给控制器,控制器调用业务层处理逻辑,业务层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

部分代码示例

vo包中

package vo;

public class Student

{

private String id;

private String name;

private String gender;

private float java;

private float english;

private float math;

private float totalScore;

private float average;

}

driver包中:

package driver;

public class Driver

{

//存放目前集合中的学生信息

public static List list=new ArrayList();

public static void main(String args[])

{

int choice=menuChoice();

while(choice!=7){

switch(choice)

{

case 1:importFromExcel();break;

case 2:importFromTxt();break;

case 3:inputFromKeyboard();break;

case 4:queryStudent();break;

case 5:exportToExecel();break;

case 6:exportToTxt();break;

default:System.out.println("无效的选择");

}

choice=menuChoice();

}

System.out.println("程序成功退出");

System.exit(0);

}

public static int menuChoice()

{

System.out.println("====学生成绩管理系统=====");

System.out.println("1. 从excel中加载数据");

System.out.println("2. 从文本文件加载数据");

System.out.println("3. 键盘输入");

System.out.println("4. 成绩查询");

System.out.println("5. 输出到excel文件");

System.out.println("6. 输出到纯文本文件");

System.out.println("7. 退出");

System.out.println("请输入选项:");

Scanner scan=new Scanner(System.in);

int choice=scan.nextInt();

return choice;

}

public static void importFromExcel()

{

/*

* 调用dao中的方法

*/

StudentDAO dao=new StudentDAO();

String fileName="c:/data/student.xls";

List list1=dao.ReadFromExcel(fileName); //dao中的方法

list.addAll(list1); //将list1集合中的数据增加到list集合中

System.out.println("成功从excel中导入"+list1.size()+"个学生");

}

}

dao包中:

package dao;

public class StudentDAO

{

// 实现读学生文件,将读出的信息存放于student集合中

public List ReadFromExcel(String fileName)

{

List list = new ArrayList();

File file = new File(fileName);

try

{

InputStream in = new FileInputStream(file);

Workbook wb = Workbook.getWorkbook(in);

Sheet s = wb.getSheet(0);

for(int i = 1; i < s.getRows(); i++) //第一行不要

{

Cell[] row = s.getRow(i);

Student student = new Student(row[0].getContents(), row[1].getContents(), //填充数据

row[2].getContents(), Float.parseFloat(row[3].getContents()),

Float.parseFloat(row[4].getContents()), Float.parseFloat(row[5].getContents()));

//由于读取的数据全部都是String 类型所以要转换成Float类型

student.setTotalScore(student.getEnglish()+student.getJava()+student.getMath());

student.setAverage(student.getTotalScore()/3);

list.add(student);

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BiffException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return list;

}

}

java 包命名_【Java】包的命名规则相关推荐

  1. java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)

    作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...

  2. java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  3. java 文本压缩_[Java基础]Java使用GZIP进行文本压缩

    import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...

  4. java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

    笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...

  5. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  6. java斗地主发牌_[Java源码]扑克牌——斗地主发牌实现

    --------------------------------------- --------------------------------------- ----------一个扑克牌核心和简单 ...

  7. python心跳包原理_心跳包机制设计详解 转载

    存在下面两种情形: 情形一:一个客户端连接服务器以后,如果长期没有和服务器有数据来往,可能会被防火墙程序关闭连接,有时候我们并不想要被关闭连接.例如,对于一个即时通讯软件,如果服务器没有消息时,我们确 ...

  8. java小朋友猜拳_[Java教程]Java猜拳小游戏(剪刀、石头、布)

    [Java教程]Java猜拳小游戏(剪刀.石头.布) 0 2015-09-29 08:00:04 import java.util.Random;import java.util.Scanner;pu ...

  9. java星空屏幕_[Java教程]窗口设置_星空网

    窗口设置 2016-04-13 0 /** * 这个是GUI的事例程序: * */ package w160412.wang.main;import java.awt.Color; import ja ...

  10. java打包拆包_[Java] Java 打包成jar包 和 解压jar包

    解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] ...

最新文章

  1. 又一联盟成立:清华、北大、深大、南科大、哈工大等12家在深单位加盟
  2. java 最小化 api_Java的API设计实践
  3. Oracle 记录插入时“Invalid parameter binding ”错误
  4. 通过移位的方式实现相加算法
  5. 一个json格式转xml格式的java实现
  6. C语言递归算法(一)
  7. linux安装nginx、php
  8. Laravel Migrate
  9. this is a test
  10. VMware安装Ubuntu 18.04虚拟机(镜像下载、硬盘分区、创建虚拟机、安装系统、桥接模式网络配置)
  11. 【CCCC】L2-025 分而治之 (25分),图的度数,使节点独立的方案
  12. MySQL核心之分组函数(sum() avg() min() max() distinct count() )
  13. Puppet自动化运维排错案例
  14. Shark简介、部署及编译小结
  15. 程设课终章:c++使用socket实现bmp图片的传输
  16. 那个北大毕业去卖猪肉的已经50岁了,他现在在干嘛?又是人生的一个转折点?...
  17. 公司规章制度制度(受不了)
  18. 2021年数学建模国赛C题思路
  19. android键盘顶起布局原理,android如何把键盘弹出不影响布局?
  20. 信捷XD系列PLC程序远程上下载怎么做?

热门文章

  1. MicroLab专业的嵌入式开发调试工具集免费试用
  2. java 绘图板_非常值得学习的java 绘图板源代码
  3. 《白夜行》《幻夜》读后感
  4. Css图片批量下载小工具--saveimg1.5
  5. 出租车不需要司机了?带你体验无人驾驶出租车!|『智能产品家』第三期
  6. 二手车行业临近洗牌时间
  7. 【Jenkins+青藤云】基于Jenkins部署青藤云镜像扫描插件(2)—部署问题解决
  8. 新站的几种简单的推广方法
  9. FDTD Solutions-边界条件
  10. 周期循环图像边界算法