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条)