分层的初步理解

需求:有一个用户管理系统,会用到各种数据库【数据库随意换用】,怎么实现?

1.测试类:Test.java

2.用户对象:User.java

3.服务类:UserService.java

4.操作数据库的接口:UserDAO.java

5.数据库的接口实现:UserDAOImpl

我们先看看它们之间的调用关系:

                 


上述的业务功能是这样的,假如就增加用户业务功能而言:在测试文件中,我们调用的是Service层的UserService里面的方法,通过UserService调用UserDAO来操作数据库,在UserDAO中将User对象实体传到后台数据库中保存。


这里我们为什么会有一个接口:实际上需要理解的就是面向接口编程的好处,写一个接口,实现部分可以是MySql的,Oracle的,SqlServer的,SBase的,或者在这里写Hibernate通过方言,文件,之类来实现功能,这样在业务功能上就具有了扩展性。【面向接口编程】



代码如下:

package com.bjsxt.service;
import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;



public class UserService {
	private UserDAO userDAO=New UserDAOImpl();  
	public void add(User user) {
		userDAO.save(user);
	}
	public UserDAO getUserDAO() {
		return userDAO;
	}
	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}
}



package com.bjsxt.model;

public class User {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}


package com.bjsxt.dao;
import com.bjsxt.model.User;


public interface UserDAO {
	public void save(User user);
}



package com.bjsxt.dao.impl;

import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;


public class UserDAOImpl implements UserDAO {

	public void save(User user) {
		//Hibernate
		//JDBC
		//XML
		//NetWork
		System.out.println("user saved!");
	}

}




当然我们直接在Test.java中写所有的业务逻辑就行了,显然不好;如果将add()写在User中,那么每次添加用户的时候,需要new一个用户,测试的时候需要用到一个用户;有人说可以用Hibernate方言实现数据库的任意切换,但是如果存储到文件中的时候,这个时候就解决不了问题了;有人说直接用Service操作用户和DB了,但这样无法实现数据库的任意切换,我们利用抽象,利用接口实现了需求。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ItJavawfc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值