IOC:Inverse of Control的缩写大多翻译为控制反转。最初看见这个词语很新鲜以为在背后应该是一门很复杂很高深的技术,了解其原理以后感觉其实道理很简单,但是看似平凡的道理往往最需要时间去深深体会就像许多的经典名言当真正体会到的时候却又那么不平凡。
IOC模式其核心思想是引入第三个类进行解耦,涉及的一些软件设计原则和模式:针对接口编程+工厂模式+反射技术等,其中还引入了bean ID此间接层来隔离具体的类型。
public interface Runner{
public void run();
}
public class RobotDog implements Runner{
public void run(){
System.out.println("RobotDog running!");
}
}
public class RobotCat implements Runner{
public void run(){
System.out.println("RobotCat running");
}
}
public class BeanFactory{
public Object getBean(String className) throws ClassNotFoundException{
return Class.forName(className).newInstance();
}
}
public class Contoller{
public static void main(String[] args){
Runner r = (Runner)BeanFactory.getBean("runner");
r.run();
}
}
在配置文件中建立runner到具体类名之间的映射便可通过映射文件配置在运行时动态加载需要的类了。
23三种设计模式早就被提出来,反射技术和面向对象编程原则也早就有了而只有真正理解并灵活加以运用才能创建优秀的软件产品。很多看似理解的原则和原理其实背后隐藏的更多的是灵活运用和融汇贯通。面向对象软件设计技术都是依据一些基本编程原则如:SRP、DIP等。