面向接口编程(很重要的一种编程思想):
优点:
松耦合,可以达到类似于插座的效果(热插拨)。
在spring的jdbc编程中,在引入数据库连接池的部分就做到了面向接口编程,以后无论换什么数据库连接池都不用修改代码直接修改配置文件即可。可以屏蔽到大量的底层操作,这种编程方式在框架中得到广泛的应用,例如spring内部完全就
是面向接口编程的。
如果不大量采用面向接口编程,框架几乎没法做到热插拨级别的松耦合,更别说为程序员带来大量的便利性,进行大量的封装。。。
下面是spring声名式事务处理的架构:
说明:
为什么在上图还要加上一个抽象类,而不是让具体的实现类直接继承接口呢?
1.首先我们需要明白接口、抽象类他们的作用
接口:接口其实就规定了必须要做的事情(做事情,就是调用方法)
抽象类:
1.先实现接口中操作都相同的方法:例如:commit()和rollback()方法在各个具体类中操作都是一致的,没有必要让具体的类在去实现这些方法,让具体类
直接继承即可,大大提高了编程的效率,简化了开发操作。
2.将接口中在各个具体类中操作不相同的方法设为抽象方法,让各个具体类在去具体的实现。最大程度的完成封装操作。
从接口到实现该接口的抽象类,再到继承了该抽象类的各个具体的ORM框架,在整合了不同的ORM框架的同时,屏蔽掉了大量的底层操作,这一切的一切都是为了面向接口编程。
ORM框架:
对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是
将数据从一种形式转换到另外一种形式。 这也同时暗示者额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机
会做优化,而这些在手写的持久层并不存在。更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护
手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。