例如当将MySQL数据库转换成Oracle数据库时(个人简单的见解,深入探究请忽略)
业务逻辑模块
/*
*业务逻辑模块
*通过接口实现数据库的操作
*/
public class Logic01 {
DaoService dao;//定义操作数据库的接口
public Logic01(DaoService dao) {
super();
this.dao = dao;
}
//向数据库中添加数据
public void addDate() {
System.out.println("当前逻辑模块,向数据库中添加数据");
dao.add();
}
//从数据库中删除数据
public void deleteDate() {
System.out.println("当前逻辑模块,从数据库中删除数据");
dao.delete();
}
//更新数据库中的数据
public void updateDate() {
System.out.println("当前逻辑模块,更新数据库中的数据");
dao.update();
}
//显示数据库中所有的数据
public void listAllDate() {
System.out.println("当前逻辑模块,显示数据库中所有的数据");
dao.listAll();
}
}
Dao
public interface DaoService {
void add();//添加数据
void delete();//删除数据
void update();//更新数据
void listAll();//显示所有数据
}
Impl
/*
* 定义操作MySQL数据库的类
*/
public class MySQLDaoImpl implements DaoService{
@Override
public void add() {
System.out.println("从MySQL数据库中添加数据");
}
@Override
public void delete() {
System.out.println("从MySQL数据库中删除数据");
}
@Override
public void update() {
System.out.println("在MySQL数据库中更新数据");
}
@Override
public void listAll() {
System.out.println("从MySQL数据库中查询所有数据");
}
}
/*
* 定义操作Oracle数据库的类
*/
public class OracleDaoImpl implements DaoService{
@Override
public void add() {
System.out.println("从Oracle数据库中添加数据");
}
@Override
public void delete() {
System.out.println("从Oracle数据库中删除数据");
}
@Override
public void update() {
System.out.println("在Oracle数据库中更新数据");
}
@Override
public void listAll() {
System.out.println("从Oracle数据库中查询所有数据");
}
}
/*
* 测试分层
*/
public class Test {
public static void main(String[] args) {
DaoService dao = new MySQLDaoImpl();
Logic01 logic01 = new Logic01(dao);
logic01.addDate();
logic01.deleteDate();
logic01.updateDate();
logic01.listAllDate();
}
}
输出结果为:
当将MySQL数据库换成Oracle数据库时,只需要修改
即可
输出结果为:
当MySQL数据库换成Oracle数据库时,只需要创建一个新的Oracle数据库操作的类,即可完成数据库的转换,以此来降低代码维护的成本,提高效率(个人简单的见解,深入探究请忽略)