这里是修真院后端小课堂,每篇分享文从
八个方面深度解析后端知识/技能,本篇分享的是:
【为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?】
大家好,我是IT修真院深圳分院第13期的学员,一枚正直纯洁善良的java程序员
今天给大家分享一下,修真院官网Java任务1,深度思考中的知识点————为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
背景介绍
接口是以统一标准的目的,让大家都知道这个是做什么的,但是具体不用知道具体怎么做,可以理解为一个规范。
接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极好地降低程序各模块之间的耦合,从而提高系统的可扩展性和可维护性。
知识剖析
接口(interface)是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。
接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。
接口是一种100%纯抽象的类,是无法被初始化的类。
常见问题
为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
解决方案
(1)使用Interface是为了实现接口和实现类分离,对接口进行封装,这样一个接口可以对应多个实现类。
(2)同一个方法也可能不止一个类调用,这个时候用接口实现分离的方法可以减少代码重复率,耦合度更低。
(3)Impl是interface的实例,使用了Impl可以减少代码的重复率。
编码实战
一种是不使用接口的,一种是使用接口的,我们来比较一下
首先是共同部分:
(1)建表的SQL语句(我用到的是MySQL)
CREATE TABLE users (
id int(225) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
age int(225) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2)用到的jar包依赖(用到的是maven)
org.mybatis
mybatis
3.3.0
mysql
mysql-connector-java
5.1.29
junit
junit
4.12
(3)项目结构
(4)User.xml
package www.jnshu.com.po;