Spirng基础:AOP,IoC,耦合,解耦,工厂类20191202

**AOP:**面向切面编程
**IoC:**反转控制

**耦合:**程序间的依赖关系
实际开发中:应该做到,编译期不依赖,运行时才依赖

解耦的思路:
第一步:使用反射来创建对象,而避免使用new关键字
第二步:通过读取配置文件来获取要创建的对象全限定类名

这里用jdbc做的演示
加载驱动:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());这种就是高度耦合的
用Class.forName就是反射,达到了解耦的目标
Spirng基础:AOP,IoC,耦合,解耦,工厂类20191202

我们用工厂类来实现解耦,给工厂类字符串,而不是new对象
Bean:可重用组件
JavaBean就是用java写的,比实体类的共年更宽大
Spirng基础:AOP,IoC,耦合,解耦,工厂类20191202
让工厂类去读取配置文件找
全限定类名
,我们只给工厂类最简单的接口名
配置文件:
Spirng基础:AOP,IoC,耦合,解耦,工厂类20191202
工厂类:
读取配置文件
Spirng基础:AOP,IoC,耦合,解耦,工厂类20191202
提供获取bean对象的工厂类方法
Spirng基础:AOP,IoC,耦合,解耦,工厂类20191202

深加工版 工厂类
因为dao和service不需要多例(没有有关类属性的操作)
所以,做成单例的(不用每次都新建对象,更快),放到Map里随取随用最好。
Spirng基础:AOP,IoC,耦合,解耦,工厂类20191202
Spirng基础:AOP,IoC,耦合,解耦,工厂类20191202
升级版 工厂类提供的外界获取对象的方法
Spirng基础:AOP,IoC,耦合,解耦,工厂类20191202