IOC思路
来源:互联网 发布:连邦软件 cad 编辑:程序博客网 时间:2024/04/30 11:35
IOC程序开发思路过程:
首先,一般程序这么引用对象:
public class xfDetailActivity { private LineChart chart = new LineChart(); chart.show();}
public class xfDetailActivity { private Chart chart = new LineChart(); chart.show();}
现在,是在xfDetailActivity中主动去分配LineChart给Chart变量,
如果有种方式,能由框架自己根据条件判断该用哪种Chart来实例化Chart变量,这是不是一种反转。
本来A创建B,现在C把B给A。这个C就是支持IOC的框架。
public class xfDetailActivity { private Chart chart; public xfDetailActivity(Chart chart){ this.chart = chart; } chart.show();}
上面的类中并没有指明是哪种Chart来实例化,由框架的配置文件的配置项来配置决定。
再比如网络请求类,声明一个网络请求接口有一个Post方法,具体实现类会有Mysql、Orical...等不同的实现类,代码调用不必在意是哪个实现类的Post方法,只需调接口类中的Post方法即可,具体是调的MySql类的Post还是Orical的Post,由配置文件来配置。
上面代码中展示的“构造方法注入”,显然有局限性,如果xfDetailActivity这个类需要10个不同的对象,那么要在构造方法传入10个参数吗?
为了优化,引入“属性注入”:
public class xfDetailActivity { private Chart chart; private Phone phone; public void setChart(Chart chart){ this.chart = chart; } public void setPhone(Phone phone){ this.phone = phone; } chart.show(); phone.call();}
为了方便统一管理xfDetailActivity类所需要注入的接口,我们声明一个类,单独列出所有需要注入的接口:
public interface xfDetailArrangable{ void injectChart(Chart chart); void injectPhone(Phone phone);}然后xfDetailActivity实现这个管理接口:
public class xfDetailActivity implements xfDetailArrangable { private Chart chart; private Phone phone; public void injectChart(Chart chart){ this.chart = chart; } public void injectPhone(Phone phone){ this.phone = phone; } chart.show(); phone.call();}
spring提供了一种配置文件的方式完成管理接口(xfDetailArangable)的注入工作:
0 0
- IOC思路
- IoC
- IoC
- Ioc
- ioc
- Ioc
- ioc
- ioc
- Ioc
- IOC
- IOC
- IOC
- IoC
- IoC
- IOC
- IoC
- IOC
- IOC
- Python3导入cookielib失败
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别
- 量化对冲那点事
- 使用richEditControl 配合自制邮箱发送带图文邮件到邮箱中
- 关于myql函数不能执行的问题
- IOC思路
- Web前端面试指导(十三):css样式的优先级是怎么样的?
- hdu 5898 odd-even number (数位dp)
- SQL中Group By的使用
- jquery中this与$(this)的用法区别.和于js中的this区别
- video.js播放视频
- json解析注意事项
- 重载=操作符解决浅拷贝问题
- CentOS 安装vsftp服务端