目录
一、项目结构总览
二、使用分层模式的好处
1. 首先,谈一下什么是三层架构?
2. 这种三层结构有什么优势呢?
三、各层功能实现分析汇总
1.View层
2.Main层
3.Dao层
一、项目结构总览
二、使用分层模式的好处
1. 首先,谈一下什么是三层架构?
所谓的三层开发就是将整个业务应用划分为表示层-业务逻辑层―数据访问层-数据库等,有的还要细一些,明确地将客户端的表示层、业务逻辑访问、和数据访问及数据库访问划分出来,十分有利于系统的开发,维护、部署和扩展。
软件要分层,其实总结一句话,是为了实现“高内聚、低耦合”。采用“分而治之”的思想,把问题划分开来各个解决,易于控制,易于延展,易于分配资源。
2. 这种三层结构有什么优势呢?
①通过将整个系统分为不同的逻辑块,大大降低了应用系统开发和维护的成本。
三层结构将表示部分和业务逻辑部分按照客户层和应用服务器相分离,客户端和应用服务器、应用服务器和数据库服务器之间的通信以及异构平台之间的数据交换等都可以通过中间件或者相关程序来实
现。当数据库或者应用服务器的业务逻辑改变时,客户端并不需要改变,反之亦然,从而大大提高了系统模块的复用性,缩短了开发周期,降低了维护费用。
②将数据访问和逻辑操作都集中到组件中,增强了系统的复用性。
如:将数据访问集中到数据访问层的组件中,从而减少了应用程序中的重复代码,每个需要访问数据库、表的窗体都使用相同的组件。
如:一些共性的逻辑操作都集中封装在逻辑层的组件中,每一个使用该方法的操作,可以共享来访问该组件。
③系统的扩展性大大增强。
模块化使得系统很容易在纵向和水平两个方向拓展:一方面可以将系统升级为更大、更有力的平台,同时也可以适当增加规模来增强系统的网络应用。由于摆脱了系统同构性的限制,使得分布数据处理成
为可能。在扩充或修改功能时,基本不会破坏原有结构的稳定性。
三层结构在营造企业竞争优势中的作用主要体现在模块化设计使得用户在现有结构的基础上实现了系统扩展,从而提高企业信息化的速度和业务水平;同时三层结构中中间件的出现使得用户可以直接从市
场上选择合适的产品来构建系统,大大降低了开发周期和开发费用。
但分层结构也有缺点也不是越多越好,那样管理很多层会比较麻烦,运行效率可能比较低。所以,一个具备良好层次结构的系统,其层的数目要恰到好处才行。
三、各层功能实现分析汇总
1.View层
| Views | 视图层类 |
| void welcome() | 输出欢迎信息 |
| void bye() | 输出再见信息 |
| int menu() |
|
| int cMenu() |
|
| int uMenu() |
|
| 快递录入流程 | View 输入快递信息并返回快递对象 ->Dao存入快递 |
| Express insert() |
|
| 快递修改流程 | Views findByName输入快递单号->调度逻辑Dao查找快递->View printExpress打印快递信息 ->View update输入修改后的快递信息->Dao存入快递柜 我们在视图层要实现的方法有三个: |
| String findByNumber() |
|
| void printExpress(Express e) | 显示快递信息 |
| void update(Express e) |
|
| 快递删除流程 | View findByName输入快递单号->调度逻辑Dao查找快递->View printExpress打印快递信息 ->View delete询问是否确认删除->Dao从快递柜删除快递 我们在试图层要实现三个方法:(其中前两个已经在上面实现) |
| int delete() |
|
| 显示全部快递流程 | Dao获取全部快递信息(存储在二维数组里)->View遍历显示所有快递信息 |
| void printAll(Express[][] es)() | 遍历es显示所有快递信息 |
2.Main层
| Main | 逻辑层类 |
private static Views v = new Views(); private static ExpressDao dao = new ExpressDao(); | 持有视图层和数据层的操作对象 |
public static void main(String[] args ) | 程序入口:
|
private static void cClient() | 处理与快递员交互的逻辑:
|
private static void uClient() | 处理与普通用户交互的逻辑:
|
3.Dao层
| ExpressDao | 数据层类 |
| 属性 | |
private Express[][] data = new Express[10][]; | 用二维数组存储快递,其中下标表示快递柜位置 |
int size; | 保存快递柜的目前快递数目 |
{
for(int i=0;i<10;i++){
data[i] = new Express[10];
}
size = 0;
} | 构造快开辟二维空间,以及初始化size变量 |
Random random | 用于生成随机数 |
| 方法 | |
boolean add(Express e) | 录入快递:
|
int randomCode() |
|
Express findByCode(int code) |
|
Express findByNumber(String number) |
|
void update(Express oldExpress, Express newExpress) |
|
void delete(Express e) |
|
Express[][] findAll() | 返回所有快递信息,即返回二维数组引用 |



