标签:com src mys set sqli 程序 use inf 修改
1.UserDaoImpl接口
package com.liqilaing.dao;
public interface UserDao {
void getUser();
}
2.UserDaoImpl实现类
package com.liqilaing.dao;
public class UserDaoImpl implements UserDao {
public void getUser() {
System.out.println("获取用户数据!");
}
}
另一个需求的实现类
package com.liqilaing.dao;
public class UserDaoMysqlImpl implements UserDao {
public void getUser() {
System.out.println("MySQL获取用户数据!");
}
}
3.UserService业务接口
package com.liqilaing.service;
public interface UserService {
void getUser();
}
4.UserServiceImpl业务实现类
package com.liqilaing.service;
import com.liqilaing.dao.UserDao;
import com.liqilaing.dao.UserDaoImpl;
import com.liqilaing.dao.UserDaoMysqlImpl;
public class UserServiceImpl implements UserService{
// private UserDao userDao = new UserDaoMysqlImpl();
private UserDao userDao;
// set
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
/*
我们使用一个set接口实现,已经发生了革命性的变化!
之前,程序员是主动创建对象!控制权在程序员手上!
使用了set注入之后,程序不再具有主动性,而是变成了被动的接受对象!
这种思想,从本质上解决了问题,我们程序员不用再去管理对象的创建了.
系统的耦合性大大降低,可以更加专注的在业务的实现上!这是IOC的原型!
*/
public void getUser() {
userDao.getUser();
}
}
测试类
import com.liqilaing.dao.UserDaoImpl;
import com.liqilaing.dao.UserDaoMysqlImpl;
import com.liqilaing.service.UserService;
import com.liqilaing.service.UserServiceImpl;
public class MyTest {
public static void main(String[] args) {
// 用户实际调用的是业务层,dao层不需要接触
UserService userService = new UserServiceImpl();
// ((UserServiceImpl) userService).setUserDao(new UserDaoImpl());
((UserServiceImpl) userService).setUserDao(new UserDaoMysqlImpl());
userService.getUser();
}
}
在我们之前的业务中,用户的需求可能会影响我们原来的代码,我们需要根据用户的需求去修改源代码
代码量十分大的话,修改一次的成本代价十分昂贵!
我们使用一个set接口实现:
// private UserDao userDao = new UserDaoMysqlImpl();
private UserDao userDao;
// set
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
我们使用一个set接口实现,已经发生了革命性的变化!
之前,程序员是主动创建对象!控制权在程序员手上!
使用了set注入之后,程序不再具有主动性,而是变成了被动的接受对象!
这种思想,从本质上解决了问题,我们程序员不用再去管理对象的创建了.
系统的耦合性大大降低,可以更加专注的在业务的实现上!这是IOC的原型
标签:com src mys set sqli 程序 use inf 修改
原文地址:https://www.cnblogs.com/liqiliang1437/p/12858286.html