您的位置:首页 > 其它

IOC(控制反转,反向控制)

2016-03-25 20:47 288 查看
IOC又称DI(依赖注入),是对传统流程的一种颠覆。当某个实例需要另一个实例协助时,在传统的程序设计中,通常由调用者创建被调用者的实例。但在IOC中,创建被调用者的工作不再由调用者来完成,而是由容器来完成(例如Spring),而不再是调用者,所以说控制被反转了,称为控制反转。


1、传统设计

(1)应用层:

package xie.ioc;

public class App {

public static void main(String[] args) {
String name = "hello word";
Service service = new Service();
service.service(name);

}
}


(2)、Service层

package xie.ioc;

public class Service {

private Dao dao = new Dao();
public void service(String words){
dao.say(words);
}
}


(3)、DAO层

package xie.ioc;

public class Dao {

public void say(String words){
System.out.println(words);
}

}


2、控制反转

(1)、IDao

package xie.ioc1;

public interface IDao {

public String say(String words);

}


(2)、DaoImpl

package xie.ioc1;

public class DaoImpl implements IDao{

public String say(String words) {
// TODO Auto-generated method stub
return words;
}

}


(3)、IService

package xie.ioc1;

public interface IService {

public void service(String words);

}


(4)、ServiceImpl

package xie.ioc1;

public class ServiceImpl implements IService {

private IDao dao;

public void service(String words) {
// TODO Auto-generated method stub
System.out.println(dao.say(words));
}

public IDao getDao() {
return dao;
}

public void setDao(IDao dao) {
this.dao = dao;
}

}


(5)、Test

package xie.ioc1;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class Test {

public static void main(String[] args) {
String
4000
words = "hello world";
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
IService service = (IService) factory.getBean("service");
service.service(words);
}

}


(6)、applicationContext.xml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  控制反转