现有角色如下:
一个接口Interface,两个接口实现类InstatnceA、InstanceB,一个调用类User。
已有代码如下:
User类中实例化了一个InstatnceA对象,代码如:Interface interface = new InstanceA();
现欲修改如下:
现在想把实例化对象改为InstatnceB而不要实例化InstanceA了,为此我们需要修改代码为:Interface interface = new InstanceB();
现在的控制是:
User控制实例化哪个类(是实例化InstanceA还是InstanceB)。
控制反转:
当前代码要改变实例化的类,都得到User类中修改代码;控制反转就是要改造成具体实例化的类不由User类决定而由其他地方决定。
spring的处理方式如下:
加入一个中间类Middle该类有Interface的get/set方法,然后真正该类注册到beans.xml,注册代码中会指定Middle调用set方法时实例化成的类。
User类想获取实例化对像通过调用Middle的get方法获取,而该对象其实是set方法实例化的。
时间: 2024-11-09 07:38:51