栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

IOC推导

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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
===============================================
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号