爲何要使用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...

今天的分享就到這裏啦,歡迎你們點贊、轉發、留言、拍磚~

相關文章
相關標籤/搜索