
DAO层
package com.web.dao;
import com.web.pojo.User;
public interface UserDao {
User getUser();
}
package com.web.dao;
import com.web.pojo.User;
public class UserDaoImplByMySQL implements UserDao{
@Override
public User getUser() {
System.out.println("UserDao By MySQL");
return null;
}
}
package com.web.dao;
import com.web.pojo.User;
public class UserDaoImplBySQLServer implements UserDao{
@Override
public User getUser() {
System.out.println("UserDao By SQLServer");
return null;
}
}
Service层
package com.web.service;
public interface UserService {
void getUser();
}
package com.web.service;
import com.web.dao.UserDao;
import com.web.dao.UserDaoImplByMySQL;
public class UserServiceImpl implements UserService {
private UserDao userDao=new UserDaoImplByMySQL();
@Override
public void getUser() {
userDao.getUser();
}
}
注意:此处UserDao被写死,当Dao层有新的实现类时,需要程序员去修改,权限在程序员手中
此时,我们对Service层进行优化
package com.web.service;
import com.web.dao.UserDao;
public class UserServiceImpl implements UserService {
private UserDao userDao;
@Override
public void getUser() {
userDao.getUser();
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
此处使用set方法将Dao设置的权限移交到用户手中,不在需要程序员去 *** 作Service层
测试
import com.web.dao.UserDaoImplByMySQL;
import com.web.dao.UserDaoImplBySQLServer;
import com.web.service.UserServiceImpl;
import org.testng.annotations.Test;
public class testController {
@Test
public void testUserByMySQL(){
UserServiceImpl userService=new UserServiceImpl();
userService.setUserDao(new UserDaoImplByMySQL());
userService.getUser();
}
@Test
public void testUserBySQLServer(){
UserServiceImpl userService=new UserServiceImpl();
userService.setUserDao(new UserDaoImplBySQLServer());
userService.getUser();
}
}
UserDao By MySQL UserDao By SQLServer =============================================== Default Suite Total tests run: 2, Failures: 0, Skips: 0 ===============================================
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)