为什么要使用INTERFACE

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jnshu_it/article/details/84283687

这里是修真院前端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析前端知识/技能,本篇分享的是:

【为什么要使用INTERFACE】

大家好,我是IT修真院成都分院第13期的学员,一枚正直纯洁善良的JAVA程序员,今天给大家分享一下,修真院官网JAVA任务一,深度思考中的知识点——

为什么要使用INTERFACE,而不是直接使用一个实体类来完成任务? INTERFACE和IMPL这种方式的好处是什么?

1.背景介绍

接口(interface):在JAVA中,接口是对行为的抽象,是一组规则的集合.

接口是抽象类的延伸可以将它看做是纯粹的抽象类.

抽象类

一个类含有抽象方法则称这个类为抽象类,用abstract修饰,抽象类中并不能只有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。

不过抽象类也不完全和普通类相同

1.抽象方法必须为public或者protected

2.抽象类不能用来创建对象;

3.如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。

2.知识剖析

在JAVA中描述对象属性的主要是抽象类

但是抽象类只能被一次继承,不能多次继承

为了在JAVA中能够使用多次继承,就引入了接口这个工具

接口的使用方法

接口的定义形式是:public interface InterfaceName{

//实现方法  

}

接口中可以含有变量和方法

接口可以通过其他类使用"implments"来实现

当一个类使用了一个接口,接口中的所有方法必须被实现,否则这个类必须声明为抽象类

为什么使用interface

1.接口的意义在于抽象

2.不同部件或层次的开发人员可以并行开工,可以通过接口,统一标准

3.代码简洁,便于查看

3.常见问题

1.接口和抽象类之间的区别

接口是用interface声明的,而抽象类则是用abstract

抽象类中抽象方法可以用public,protected和default修饰符修饰.接口的默认修饰符是public,且不可使用其他修饰符

抽象方法可以继承一个类和实现多个接口,接口只可以继承一个或者多个其他接口

抽象类需要子类使用extends关键字继承抽象类,接口使用implements来实现接口

抽象类速度快,接口速度稍慢于抽象类

2.接口是抽象类的一种为什么还要使用interface

JAVA中类的继承至多只有一个,但是对象的属性不可能只有一个,为了实现多态,加入了interface的概念

3.为什么接口只能被public修饰

接口中可以含有 变量和方法

接口中的变量会被隐式地指定为public static final变量

方法会被隐式地指定为public abstract方法

4.接口的使用场景

1.类与类之前需要特定的接口进行协调,而不在乎其如何实现。

2.作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识

3.需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。

4.需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。

5.编码实战

6.扩展思考

贫血模型和充血模型

贫血模型

贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。

优点是系统的层次结构清楚,各层之间单向依赖,Client->(Business Facade)->Business Logic->Data Access(ADO.NET)。当然Business Logic是依赖Domain Object的。似乎现在流行的架构就是这样,当然层次还可以细分。

该模型的缺点是不够面向对象,领域对象只是作为保存状态或者传递状态使用,所以就说只有数据没有行为的对象不是真正的对象。

充血模型: 层次结构和上面的差不多,不过大多业务逻辑和持久化放在Domain Object里面,Business Logic只是简单封装部分业务逻辑以及控制事务、权限等,这样层次结构就变成Client->(Business Facade)->Business Logic->Domain Object->Data Access。

优点是面向对象,Business Logic符合单一职责,不像在贫血模型里面那样包含所有的业务逻辑太过沉重。

缺点:不能更好的分模块开发,业务逻辑比较混乱

7.参考文献

https://www.cnblogs.com/dolphin0520/p/3811437.html

https://www.cnblogs.com/tianxue/p/5641555.html

https://blog.csdn.net/liuyishan1993/article/details/79368181

https://blog.csdn.net/a910626/article/details/51655910

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

PPT链接 视频链接

更多内容,可以加入IT交流群565734203与大家一起讨论交流

这里是技能树·IT修真院:https://www.jnshu.com,初学者转行到互联网的聚集地

猜你喜欢

转载自blog.csdn.net/jnshu_it/article/details/84283687