程序解耦思想

为什么程序要解耦?

1、便于代码维护

2、降低模块依赖,修改一个模块不影响另一个模块

3、提高代码扩展性

4、提高代码重用性


一、使用反射创建对象,而避免使用 new 关键字(反射技术)

//1、使用获取类的方式来加载驱动
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());

//2、使用反射方式来加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");

1、使用获取类的方式来加载驱动的话,如果没有导入相关包的时候,编译时就会报错,更不用说运行了

2、使用反射方式来加载驱动的话,编译时是完全没有问题的,因为此时它只是一个字符串,只有运行的

时候才会报错

二、通过读取配置文件来获取相关属性值

Class.forName("com.mysql.cj.jdbc.Driver");

接下来我们再看这个使用反射方式加载驱动的代码,

编译是没有问题了,**但是 **"com.mysql.cj.jdbc.Driver"加载的数据库驱动写死了,

当我们需要更改连接连接其他数据库种类的时候,就必须到此处修改,代码多的时候会出现不好找或者

不小心修改错误而导致运行错误,从而直接修改是存在一定隐患的。

所以我们可以读取配置文件来获取相关属性,所有相关的属性变量都在配置文件修改,无需改动属

性所在的类

三、动态代理(JDK基于接口的动态代理(new Proxy.newInstance),cglib基于子类的动态代理 (

Enhancer.create)

动态代理:不修改源码的基础上对已有方法增强

执行过程:

1、创建 被代理对象接口 的代理类

2、获取代理类调用接口方法

3、间接调用invoke()方法,里面除了有该业务层的方法外,还有其它数据处理的相关代码

4、如果被代理方法有返回值则声明返回值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值