Java基础教程

第一章: 开启Java学习之旅

第二章: 掌握计算机基础知识

第三章: 掌握命令行基础知识

第四章: 我的第一个Java程序

第五章: Java编程必备基础

第六章: Java编程的核心:控制结构

第七章: Java面向对象基础

第八章: Java面向对象进阶

第九章: Java字符串类型

第十章: Java数组与数据结构

第十一章: Java高级数据结构

第十二章: Java并发编程基础

首页 > Java基础教程 > 第八章: Java面向对象进阶 > 8.5节: Java中的包结构

8.5节: Java中的包结构

薯条老师 2021-12-10 16:10:35 181769 0

编辑 收藏

广州番禺Python, Java小班周末班培训

第四期线下Java, Python小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析, Java中高级工程师培训。授课详情请点击:http://chipscoco.com/?cate=6    

8.5.1 Java中的Package

Java中的package,即俗称的包结构。包结构实质是一种目录结构,在这个目录结构中存放了多个Java类和接口文件,从这一个角度来看,读者可以把Java中的package理解为类或接口的仓库。

8.5.2在IDEA中创建Package

请读者打开IDEA并新建一个名为Algorithm的Java项目。项目创建成功以后,鼠标单击项目视图中的src目录,然后右键分别点击New以及Pacakge菜单来创建一个Java包,如下图所示:

图片.png 

点击Package菜单后,IDEA会弹出一个输入框,读者可在输入框中输入包名,在本节教程中,我们需输入的包名为sort。

Java中的包结构同目录结构一样,也采用了树形结构的存储方式。在包的树形结构中,包可以定义子包。读者如需在IDEA中定义多级的包结构,可以使用英文的点号来进行表示。例如创建A包,A包下包含B包,B包下又包含C包,则包名写法为A.B.C。输入完毕以后,IDEA会同时创建A包,A包下的B包,以及B包下的C包。

sort包创建成功后,我们接着再选中sort并右键New一个Java类,类名为BubbleSort。BubbleSort创建成功后,在IDEA中输入以下代码:

package sort;
public class BubbleSort {
    public static void bubbleSort(int[] data){
        for(int outer_index=0; outer_index < data.length-1; ++outer_index) {
            for (int inner_index=0; inner_index < data.length-1-outer_index; ++inner_index) {
                if (data[inner_index] > data[inner_index+1]) {
                    int tmp = data[inner_index];
                    data[inner_index] = data[inner_index+1];
                    data[inner_index+1] = tmp;
                }
            }
        }
    }
}

现在我们已经创建好了一个sort包,并且在这个包中编写了一个BubbleSort类,该类提供了一个静态的bubbleSort方法,用来对整型数组使用冒泡排序算法进行排序。

8.5.3 package关键字

细心的读者会发现,当我们在包结构中创建好类或接口时,IDEA都会在文件的第一行自动添加package+包名的指令,比如上文中代码中的package  sort;指令。这里的package关键字有什么作用呢?这里的package关键字用来声明文件中的类和接口所属的包。

读者需注意,package指令必须写在文件的开头。当包结构包含多级时,使用点号来表示包的层级结构,例如package a.b.c。

现在包已经创建好,我们接下来该怎么使用包结构中的类和接口呢?

8.5.4 import关键字

在Java中使用import关键字来导入包以及包中的文件。包的导入语法:

import package1[.package2...].ClassName|Interface

ClassName表示类名,Interface表示接口名。现在我们继续在IDEA中创建一个与sort同级的包,并命名为test。test包创建成功以后,再到该包下创建一个名为TestSort的类,并输入以下代码:

package test;
// 导入sort包中的BubbleSort类
import sort.BubbleSort;
import java.util.Arrays;
public class TestSort {
    public static void main(String[] args){
        int[] numbers = {5,1,2,0,-1};
        BubbleSort.bubbleSort(numbers);
        System.out.println(Arrays.toString(numbers));
    }
}
在以上代码中,我们通过import关键字导入了sort包中的BubbleSort类,这样就可以在main函数中来测试冒泡排序算法了。

8.5.5 包结构的设计

我们在设计包结构时应遵循高内聚的设计原则,所谓内聚是指模块内部各元素与模块的相关度。包结构中的类、接口越相关,则内聚性越好。

比如在8.5.2节中创建的sort包,包中的BubbleSort类与sort就有很强的相关性,sort包用来纳入所有的排序算法类和接口,而BubbleSort类实现的冒泡排序是排序算法中的一种。如果再添加一个用于查找算法的类,就不相关,此时应该重新定义一个表示查找算法的包。

8.5.6 包与三层架构

软件的三层架构是指将整个应用程序,按其功能来划分的三层逻辑结构:表示层,业务逻辑层,数据访问层。表示层的功能是接收用户输入的数据,以及进行数据显示,业务逻辑层,是对应于具体的业务规则,将其封装成一个个基本的处理模块,数据访问层则是把数据的读写操作进行了封装。

使用分层架构使得项目的逻辑结构变得清晰可读,分工明确,开发人员只需关注分层架构中的其中某一层,降低了维护成本。

在开发Java项目的过程中,我们可以使用包结构来组织三层架构,其形式为如下的一种分层架构:

└── app.java

└── uil

└── bll

└── dal

其中app.java是整个应用程序的入口,uil指的是数据表示层,bll指的是业务逻辑层,而dal代表数据访问层。三层架构并不是单纯将每个package进行命名,按这种逻辑形式进行项目的组织,程序员在实际的设计过程中,应遵循模块化设计原则,同时多考虑代码的复用性以及减少层与层之间的相互依赖,以最大限度地发挥三层架构的功效。

8.5.7 Java中的内置包

Java的JDK提供了许多实用的包,比如java.net,java.io,java.util等,在使用这些包时直接通过import来导入,非常方便。如果在项目中需要用到第三方包,如Spring框架的jar包, 则必须在IDEA中手动导入,或者通过maven等工具加载至项目中。关于这部分的详细介绍,读者可查阅官方文档。

8.5.8 高薪就业班



欢迎 发表评论: