关于面向接口编程

原创 2016年08月29日 11:27:10

面向接口编程(很重要的一种编程思想):

优点:

松耦合,可以达到类似于插座的效果(热插拨)。

在spring的jdbc编程中,在引入数据库连接池的部分就做到了面向接口编程,以后无论换什么数据库连接池都不用修改代码
直接修改配置文件即可。可以屏蔽到大量的底层操作,这种编程方式在框架中得到广泛的应用,例如spring内部完全就
是面向接口编程的。

        如果不大量采用面向接口编程,框架几乎没法做到热插拨级别的松耦合,更别说为程序员带来大量的便利性,进行大量的封装。。。

下面是spring声名式事务处理的架构:

说明:

为什么在上图还要加上一个抽象类,而不是让具体的实现类直接继承接口呢?

1.首先我们需要明白接口、抽象类他们的作用

接口:接口其实就规定了必须要做的事情(做事情,就是调用方法)

抽象类:

1.先实现接口中操作都相同的方法:例如:commit()和rollback()方法在各个具体类中操作都是一致的,没有必要让具体的类在去实现这些方法,让具体类

直接继承即可,大大提高了编程的效率,简化了开发操作。

2.将接口中在各个具体类中操作不相同的方法设为抽象方法,让各个具体类在去具体的实现。最大程度的完成封装操作。

从接口到实现该接口的抽象类,再到继承了该抽象类的各个具体的ORM框架,在整合了不同的ORM框架的同时,屏蔽掉了大量的底层操作,这一切的一切都是为了面向接口编程。

ORM框架:

对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是

将数据从一种形式转换到另外一种形式。 这也同时暗示者额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机

会做优化,而这些在手写的持久层并不存在。更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护

手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。



Struts2的结果集架构


说明:
在struts2对结果集的处理中同样使用到了接口+抽象类+具体实现类的三层架构。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

面向接口编程的好处分析

面向接口编程 高内聚低耦合 设计模式之开闭原则

设计模式六大原则(1):单一职责原则

定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常...

LeetCode----best-time-to-buy-and-sell-stock

题目描述 Say you have an array for which the ith element is the price of a given stock on day...

数组的进一步使用

数组是数据结构中最基本的结构形式,它是一种顺序式的结构,存储的是同一类型的数据。每个数组元素都拥有下标(index)和元素值(value),下标方便存取数据,而元素值就是被存储的数据。     数组使...

LeetCode---UniquePaths

LeetCode---UniquePaths 先放下原题描述: A robot is located at the top-left corner of a m x n grid ...

面向接口编程与面向实现编程

面向接口编程与面向实现编程最近拜读了四人组的经典名作《设计模式 可复用面向对象软件的基础》一书,打算以博客的形式进行笔记与思考书中提到了可复用面向对象设计的原则,其中的第一个原则是: 针对接口编程...

浅谈依赖注入思想与面向接口编程

依赖注入(Dependency Injection) 今天我们讨论的内容核心是面向接口编程,我决定还是要从依赖注入开始讲起,因为DI的思想可以说是面向接口编程思想的特殊表现,也可以说是与面向接口...

设计模式六大原则(6):开闭原则

定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对...

SSM框架

Spring+SpringMVC+Maven

面向接口编程详解(一)

面向接口编程详解(一) 标签: 编程interface生物设计模式语言交通 2009-08-14 16:58 2971人阅读 评论(5) 收藏 举报 版权声...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)