IOC推导

IOC推导,第1张

IOC推导

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
===============================================

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5696957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存