为何要使用INTERFACE

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

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

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

【为何要使用INTERFACE】架构

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

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

1.背景介绍.net

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

接口是抽象类的延伸能够将它看作是纯粹的抽象类.对象

抽象类blog

一个类含有抽象方法则称这个类为抽象类,用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/dolph...

 

https://www.cnblogs.com/tianx...

 

https://blog.csdn.net/liuyish...

 

https://blog.csdn.net/a910626...

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

相关文章
相关标签/搜索