学习博客:IOC如何降低了代码之间的耦合度

IOC如何降低了代码之间的耦合度

从传统方式到IOC一步步解耦

第一步转变 直接new对象---->面向接口编程

最开始我们创建一个对象是采取new对象的方式,但这样不可以实现多态,比如我创建一个person对象,里面有一个eat(Apple apple)方法,那么调用这个eat方法的类,需要传入苹果(Apple)对象,之后我的这个方法改成吃梨子了,这个方法又改成eat(Pear pear)了,调用eat方法的类,又需要把之前的苹果改成梨子,扩展性差,于是出现了面向接口编程,我在eat方法里面传入水果(Fruit)接口,之后苹果,梨只需要实现接口即可,调用eat方法的类,想吃梨子就传入梨子,想吃苹果传入苹果即可。

第二步转变 面向接口编程 -----> 工厂模式

面向接口编程耦合问题简而言之就是:如果我的实现类变了,我得到调用代码里一个个去改我原本的实现类名字,很不方便。

面向接口编程后,解决接口和实现类之间的耦合
在面向接口编程中我们常常会出现这样的代码UserDao userDao = new UserDaoImpl(); 假设现在不用这个UserDaoImpl了,而改用UserDao的另一个实现类UserDaoImpl2,UserDao userDao = new UserDaoImpl()需要改为UserDao userDao = new UserDaoImpl2(),这样也就是接口和实现类出现了耦合。

工厂模式如何去解决耦合问题呢 ---- 不让接口和实现类产生关系,而是找一个中间人,也就是工厂,实现类必须要从工厂中取出来。工厂的意思也就是一个批量制造同样规格(规格也就是接口类所提供好的规范)类的类。
这样的话,如果userDao变成了需要UserDaoImpl1,studentDao变成了需要StudentDaoImpl1,我只需要去BeanFactory中改对应的getUserDao和getStudentDao方法即可。这样实际上就是从改多个类变成了改BeanFacotry一个方法,这样接口类和工厂类产生了耦合。

第三步转变 工厂模式 ----> 工厂模式+反射+配置文件(IOC的底层实现)
工厂模式耦合问题简而言之就是:如果我们的实现类又变了,然后我们要返回新的实现类,还得去工厂改,那又不方便了,我们尽量想不改代码。
为了能解决接口类和工厂类的耦合,是不是也就是要解决。这个方法中只能返回UserDaoImpl或者UserDaoImpl1的问题,我们希望他可以根据我们的需要返回需要的UserDaoImpl,如何解决?
配置xml文件 — 指定需要返回的UserDaoImpl。这样的话如果我们需要改UserDao的实现类的类型,我们可以直接在配置文件中修改,就不用改代码啦!
引用自https://blog.csdn.net/zhangyuxuan2/article/details/83007830
侵删

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值