辅助理解的程序代码
dao层
1.UserDao
package dao;
public interface UserDao {
void getUser();
}
2.UserDapImpl
package dao;
//UserDao接口的实现类
public class UserDaoImpl implements UserDao{
public void getUser(){
System.out.println("默认获取用户数据");
}
}
3.UserDaoMysqlImpl
package dao;
public class UserDaoMysqlImpl implements UserDao{
@Override
public void getUser() {
System.out.println("Mysql获取用户数据");
}
}
4.UserDaoOracleImpl
package dao;
public class UserDaoOracleImpl implements UserDao{
@Override
public void getUser() {
System.out.println("Oracle获取用户数据");
}
}
service包
1.UserService
package service;
public interface UserService {
void getUser();
}
2.UserServiceImpl
package service;
import dao.UserDao;
import dao.UserDaoOracleImpl;
public class UserServiceImpl implements UserService{
// private UserDao userDao = new UserDaoOracleImpl();
private UserDao userDao;
//利用set就行动态实现值的注入
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void getUser(){
userDao.getUser();
}
}
test类
import dao.UserDaoOracleImpl;
import service.UserServiceImpl;
/*
再原本的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求趣修改代码
如果程序代码量十分大,那么修改一次的成本代价十分昂贵。
我们使用一个set接口实现set注入就是spring反转控制的体现。
之前,程序是主动创建对象,控制权再程序猿手上,所以每个需求增加都需要程序呀修改
使用set注入后,程序不再具有主动性,而是变成了被动的接收对象。
这种思想使得程序员无需趣管理对象的创建了,系统的耦合性大大降低,可以专注于业务的实现。
这就是IOC的原型
*/
public class test1 {
public static void main(String[] args) {
//用户实际调用的是业务层,dao层他们不需要接触
UserServiceImpl userService = new UserServiceImpl();
userService.setUserDao(new UserDaoOracleImpl());
userService.getUser();
}
}
重点:
再原本的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求趣修改代码
如果程序代码量十分大,那么修改一次的成本代价十分昂贵。
我们使用一个set接口实现set注入就是spring反转控制的体现。 之前,程序是主动创建对象,控制权再程序猿手上,所以每个需求增加都需要程序呀修改 使用set注入后,程序不再具有主动性,而是变成了被动的接收对象。 这种思想使得程序员无需趣管理对象的创建了,系统的耦合性大大降低,可以专注于业务的实现。
这就是IOC的原型。