博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
程序解耦思想
阅读量:3921 次
发布时间:2019-05-23

本文共 800 字,大约阅读时间需要 2 分钟。

为什么程序要解耦?

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、如果被代理方法有返回值则声明返回值

转载地址:http://fdern.baihongyu.com/

你可能感兴趣的文章
【.net core】电商平台升级之微服务架构应用实战
查看>>
【翻译】.NET 5 Preview 1 发布
查看>>
使用GUI工具Portainer.io管控Docker容器
查看>>
Abp vNext发布v2.3!
查看>>
.NET Core开发实战(第27课:定义Entity:区分领域模型的内在逻辑和外在行为)--学习笔记...
查看>>
BeetleX之vue-autoui自匹配UI插件
查看>>
.NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记...
查看>>
如何用 Blazor 实现 Ant Design 组件库?
查看>>
DotNetCore Web应用程序中的Session管理
查看>>
从业务需求抽象成模型解决方案
查看>>
Kafka
查看>>
Magicodes.IE 2.2发布
查看>>
应用交付老兵眼中的Envoy, 云原生时代下的思考
查看>>
.NET 开源项目 StreamJsonRpc 介绍[上篇]
查看>>
.NET Core微服务开发选项
查看>>
探讨NET Core数据进行3DES加密或解密弱密钥问题
查看>>
Vue 3拖更,尤雨溪介绍最新进展
查看>>
如何利用.NETCore向Azure EventHubs准实时批量发送数据?
查看>>
WPF 框架全构建环境虚拟机硬盘分享
查看>>
ABP框架 v3.0 已发布!
查看>>