(一) 什么是程序的耦合
程序的耦合是程序之间的关联性,也就是多个类的联系是否紧密,多个对象之间的关系是否密切。
生活中的案例:
你的房子里面有窗子,那么房子和窗子就有了关联
耦合度是松还是紧就看你的关联是强还是弱,也就是修改的代价,比如你窗子是扣死在墙里的那么你修
改窗子就必须修改墙 这就比较紧密了,反应在程序上就是耦合度高,不利于程序的扩展和维护。
但是如果你窗子是按照某种规格的 可以自由拆装的,那么修改的代价就小,耦合度也就低了,反应在程
序上就是耦合度低,利于程序的扩展和维护。
我们写程序的目标就是 高内聚 低耦合!
这样修改起来 就不会有太多的联系,不用改一个地方其他的都要修改。
(二) 解决程序耦合的思路
1 编译不依赖,运行时才依赖
当我们讲解 jdbc 时,是通过反射来注册驱动的,代码如下 :
此时的好处式,我们的类中在编译阶段不再需要具体的驱动类,就算删除 mysql 的驱动 jar 包,依然可以
通过编译。在运行阶段才会依赖驱动包。实际开发当中,我们应该做到编译不依赖,运行时才依赖。
上述代码产生的新问题, mysql 驱动类的全限定类名作为一个字符串 java 类中是写死的,一旦发生改
变,还需要修改源码。
Class
.
forName
(
"com.mysql.jdbc.Driver"
);
//
使用的驱动类是指定了一个字符串
使用配置文件结合反射就可以解决上述问题。
2 使用工厂模式解耦合
在实际开发中我们可以把三层的对象都使用配置文件配置起来,当启动服务器应用加载的时候,让一个
类中的 方法通过读取配置文件,把这些对象创建出来并 存起来 。在接下来的使用的时候,直接拿过来用
就好了。
那么,这个读取配置文件,创建和获取三层对象的类就是工厂。