|
2017-08-01 10:28:58
Spring3开发实战-独家视频教程-视频教程学习笔记 浏览(6645)|评论(10) 交流分类:学习问题讨论|笔记分类: 课程笔记
IoC/DI入门,是什么、能干什么,分析IoC/DI的思想演变进程 视频教程学习笔记
视频课程地址:Spring3开发实战-独家视频教程 当前播放的视频地址:IoC/DI入门,是什么、能干什么,分析IoC/DI的思想演变进程 类的设计原则:加强内聚,松散耦合--》如何做到? 按名词:依赖关系 按动词:依赖的动作-->注入 正向:现在程序的方向,加入对象A要调用B对象,现在是在A里面直接创建B对象,然后调用 public class A{ public void t1(){ new B().t2(); } } public class B{ public void t2(){ } } 简而言之,就是程序需要什么,就由程序主动去获取需要的资源,这个方向就是正向。 public class C{ public void t3(){ A a = new A3(){ } } public class Factory{ public void t3(){ A a = new A3(); } } public class Factory{ public static A } IoC/DI入门,是什么、能干什么,分析IoC/DI的思想演变进程 笔记 类的设计原则:加强内聚,松散耦合--》如何做到? 按名词:依赖关系 按动词:依赖的动作-->注入 正向:现在程序的方向,加入对象A要调用B对象,现在是在A里面直接创建B对象,然后调用 public class A{ public void t1(){ new B().t2(); } } public class B{ public void t2(){ } } 简而言之,就是程序需要什么,就由程序主动去获取需要的资源,这个方向就是正向。 public class C{ public void t3(){ A a = new A3(){ } } public class Factory{ public void t3(){ A a = new A3(); } } public class Factory{ public static A } IoC/DI入门,是什么、能干什么,分析IoC/DI的思想演变进程 笔记 类的设计原则:加强内聚,松散耦合--》如何做到? 按名词:依赖关系 按动词:依赖的动作-->注入 正向:现在程序的方向,加入对象A要调用B对象,现在是在A里面直接创建B对象,然后调用 public class A{ public void t1(){ new B().t2(); } } public class B{ public void t2(){ } } 简而言之,就是程序需要什么,就由程序主动去获取需要的资源,这个方向就是正向。 public class C{ public void t3(){ A a = new A3(){ } } public class Factory{ public void t3(){ A a = new A3(); } } public class Factory{ public static A } IoC/DI入门,是什么、能干什么,分析IoC/DI的思想演变进程 笔记 类的设计原则:加强内聚,松散耦合--》如何做到? 按名词:依赖关系 按动词:依赖的动作-->注入 正向:现在程序的方向,加入对象A要调用B对象,现在是在A里面直接创建B对象,然后调用 public class A{ public void t1(){ new B().t2(); } } public class B{ public void t2(){ } } 简而言之,就是程序需要什么,就由程序主动去获取需要的资源,这个方向就是正向。 public class C{ public void t3(){ A a = new A3(){ } } public class Factory{ public void t3(){ A a = new A3(); } } public class Factory{ public static A } IoC/DI入门,是什么、能干什么,分析IoC/DI的思想演变进程 笔记 类的设计原则:加强内聚,松散耦合--》如何做到? 按名词:依赖关系 按动词:依赖的动作-->注入 正向:现在程序的方向,加入对象A要调用B对象,现在是在A里面直接创建B对象,然后调用 public class A{ public void t1(){ new B().t2(); } } public class B{ public void t2(){ } } 简而言之,就是程序需要什么,就由程序主动去获取需要的资源,这个方向就是正向。 public class C{ public void t3(){ A a = new A3(){ } } public class Factory{ public void t3(){ A a = new A3(); } } public class Factory{ public static A } IoC/DI入门,是什么、能干什么,分析IoC/DI的思想演变进程 笔记 参与者:(多个)应用程序和spring IOC/DI的基本思想: 1.把程序之间的依赖关系去掉 2.把程序对象设置到IOC/DI容器中,作为bean 3.由IOC/DI容器来管理bean的创建、实例化 4.由IOC/DI容器来把bean之间的关系注入到需要这些关系的对象里面 简而言之,就是对象之间的依赖全部去掉,然后由IOC/DI容器来管理对象和对象之间的依赖关系 功能:就是实现了对象之间的松散耦合 控制什么? IOC/DI容器控制对象本身的创建、实例化 IOC/DI容器控制对象之间的依赖关系 为何叫反转(对应于正向)? 因为现在应用程序不能“主动”去获取外部资源了,而是“被动”等待IOC/DI容器给他“注入”它所需要的资源,所以称之为反转 哪些方面反转? 1.创建对象 2.程序获取资源(比如:依赖的其他对象,依赖关系)的方式 为何需要反转? 1.引入容器过后,体系更为松散,而且管理更有序 2.类之间真正实现了松散耦合,使得开发、测试、维护、升级都变得容易了。 IOC/DI并没有帮助我们实现任何的业务功能呢个,原本该由应用实现的功能,还是由应用自身完成。 什么是依赖(按名词(依赖关系)、动词(依赖的动作-->注入)理解) 依赖(动作)于注入依赖关系 应用程序依赖于IOC/DI容器 为什么需要依赖呢? 因为反转了过后,应用程序依赖的资源都在IOC/DI容器里面 依赖什么东西? 应用程序依赖于IOC/DI容器,依赖IOC/DI容器为它注入所需要的资源(比如:依赖关系) 依赖注入依赖:应用程序依赖于IOC/DI容器 深化理解IoC/DI的思想,总结IoC/DI的本质 笔记 11.谁注入于谁? IOC/DI容器注入于应用程序。 12.注入什么东西? 注入应用程序需要的外部资源。比如:依赖关系 13.为何要注入? 因为程序要正常运行,需要这些资源。 14.依赖注入和控制反转是同一个概念吗? 不是 其实描述的是同一件事,但是是从不同的角度在说。 控制反转:从IOC/DI容器角度来说。 依赖注入:从应用程序的角度在说。 15.一句话描述 控制反转的描述:IOC/DI容器反过来控制应用程序,控制应用程序所需要的外部资源(比如:依赖关系) 依赖注入的描述:应用程序依赖IOC/DI容器,依赖它注入所需要的外部资源。 参与者:应用程序(对歌对象)和spring 16.IOC/DI是什么? IOC:就是使用IOC/DI容器反过来控制应用程序所需要的外部资源,这样一种程序的开发思想。 DI:就是应用程序依赖IOC/DI容器来注入所需要的外部资源,这样一种程序的开发思想。 17.能做什么? 松散对象的耦合 18.怎么做? 可以自己实现 使用Spring,spring里面有实现好的IOC/DI容器,这样就不用自己去实现了。 19.用在什么地方? 凡是程序里面需要使用到外部资源的情况,都可以考虑使用哪个IOC/DI容器。 比如:工厂类,现在就可以不要了。 20.强调一下外部资源 对于一个类来说,所谓外部资源,就是指在自己类的内部不能得到或实现的东西。比如:在类里面要读取一个配置文件,那么,这个配置文件就相当于这个类的外部资源。 又比如:A类里面要调用B类,那么对于A类来讲,B类就是外部资源。 应用程序从主动变为了被动 是从设计理念 IOC容器 简单的理解就是:实现IOC思想,并提供对象创建、对象装配以及对象生命周期管理的软件就是IOC容器。 IOC理解 1.应用程序无需主动new对象:而是描述对象应该如何被创建即可 IOC帮你创建,即被动实例化。 2.应用程序不需要主动装配对象之间的依赖关系,而是描述需要哪个服务,IOC容器会帮你装配(即负责将它们关联在一起),被动接收装配: 3.主动变被动,体现好莱坞法则:别打电话给我们,我们会打电话给你。 4.体现迪米特法则(最少知识原则):应用程序不知道依赖的具体实现,只知道需要提供某类服务的对象(面向对象编程):并松散耦合,一个对象应当对其他对象有尽可能少的了解,不和陌生人(实现)说话。 5.是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则。 使用IOC/DI容器开发需要改变的思路 1.应用程序不主动创建对象,但要描述创建他们的方式。 2.在应用程序代码中不直接进行服务的装配,但要描述哪一个组件需要哪一项服务,由容器负责将这些专配在一起。 也就是说;所有的组件都是被动的,组件初始化和装配都由容器负责,应用程序只是在获取相应的组件后,实现应用的功能即可。 提醒一点 IOC/DI是思想,不是纯实现技术,IOC是框架共性,只是控制权的转移,转移到框架,所以不能因为实现了IOC就叫IOC容器,而一般除了实现了IOC外,还具有DI功能的才叫IOC容器,因为容器除了要负责创建并装配组件关系,还需要管理组件生命周期。 精品视频课程推荐
深入浅出学Shrio视频教程
spring 注解零配置视频教程
ssh+jbpm项目(某集团OA)视频教程
高级软件架构师实战培训阶段一
深入浅出学Spring Data JPA视频教程
评论(10)
请登录后评论 登录
|