【學習】介面是什麼?實現原理的是什麼?
一. 什麼是介面
介面是一種用來定義程式的協議,它描述可屬於任何類或結構的一組相關行為。
介面是一組規則的集合,它規定了實現本介面的類或介面必須擁有的一組規則。體現了自然界“如果你是……則必須能……”的理念。
介面是在一定粒度檢視上同類事物的抽象表示。因為“同類事物”這個概念是相對的,它因為粒度檢視不同而不同。
二. 為什麼要使用介面?而不是直接實現呢?
介面的使用並非總是從設計的角度來考慮。介面和python其他語法現象一樣,共同構成了python整個語言體系。
介面的意義在於 抽象、不拘細節,從而使同類事物在同一高度具有通用及可替代性。
在系統分析和架構中,分清層次和依賴關係,每個層次不是直接向其上層提供服務(即不是直接例項化在上層中),而是通過定義一組介面,僅向上層暴露其介面功能,上層對於下層僅僅是介面依賴,而不依賴具體類。
系統靈活性增強
當下層需要改變時,只要介面及介面功能不變,則上層不用做任何修改。甚至可以在不改動上層程式碼時將下層整個替換掉,就像我們將一個WD的60G硬碟換成一個希捷的160G的硬碟,計算機其他地方不用做任何改動,而是把原硬碟拔下來、新硬碟插上就行了,因為計算機其他部分不依賴具體硬碟,而只依賴一個IDE介面,只要硬碟實現了這個介面,就可以替換上去。
不同部件或層次的開發人員可以並行開工
就像造硬碟的不用等造CPU的,也不用等造顯示器的,只要介面一致,設計合理,完全可以並行進行開發,從而提高效率。
那麼具體什麼時候用,什麼時候不用呢?在常見的三層架構中,有以下幾個層次,分別進行說明:
介面層
也就是展示層,直接呈現給使用者的,可能不同的軟體有不同的呈現方式,比如Web,WinForm,甚至移動APP,在這個層次,我認為是沒有必要寫太多的介面。
業務邏輯層
這個層次,業務邏輯,可以根據需要使用介面。如果是直接讀寫資料庫什麼的,就直接用呼叫資料庫訪問層的介面。如果是與多個第三方介面進行互動,那麼就需要介面,不同的渠道各自實現。
資料訪問層 資料訪問層,最好使用介面,比如資料庫訪問,這種可以根據不同的資料庫實現相應的介面向業務邏輯層提供服務。
三.介面請求的型別
http1.0定義了三種請求方法:get,post,head
http1.1新增了五種請求方法:options,put,delete,trace,connect
Get:請求指定的頁面資訊,並返回實體。Get可以說是最常見的,它本質就是傳送一個請求來獲取伺服器上的某一資源,資源通過一組http頭和呈現資料返回給客戶。
Head:類似於get請求,只不過返回的響應中沒有指定的內容,用於獲取報頭。
Post:向伺服器提交資料。這個方法用途廣泛,幾乎所有的提交操作都是靠這個完成。
Put:從客戶端向伺服器傳送的資料取代指定的文件的內容。Put與post都是向伺服器傳送資料,他們之間有一個重要的區別,put通常指定了資源的存放位置,而post沒有,post的資料存放位置由伺服器自己決定。
Delete:請求伺服器刪除指定的頁面。刪除某一個資源
Connect:http1.1協議中預留給能夠將連結改為管道方式的代理伺服器。
Options:允許客戶端檢視伺服器的效能。返回伺服器針對特定資源所支援的http請求方法。
Trace:回顯伺服器收到的請求,主要用於測試或者診斷。
四.介面規範和介面文件
介面規範的重要性
無規矩不成方圓,為了web/app開發人員與後臺介面開發人員更好的配合,所以我們需要制定介面規範。介面,是Web/APP端與伺服器端互動密不可分的環節,介面的規範性會直接影響雙方對接過程中的效率和質量。本著快速高效開發的目的性,避免對接過程中的錯誤率,介面應當有規範的約束。
介面文件
後臺介面人員和移動端開發人員之間的配合肯定少不了介面文件這種利器!像中大型專案可能一個介面包含的欄位就有上百個,如果沒有介面文件,僅僅靠兩個人口頭交流,那估計一天就能搞定幾個介面配合。
介面文件有哪幾種形式哪?
1 Excel,Word等文件形式。
2 介面管理開源網站
介面文件和介面測試工具–apipost
它既可以測試介面也可根據測試的介面生成文件,有線上文件,離線文件如:html\markdown和word格式文件,直接生成不用自己手寫.
ApiPost - 可直接生成文件的API除錯、管理工具
www.apipost.cn
圖示
相關文章
- NLA是什麼?NLA的原理是什麼?
- 什麼是CDN?CDN的技術原理是什麼?
- 交換機是什麼,它的工作原理是什麼
- WebSocket 是什麼原理?為什麼可以實現持久連線?Web
- WebSocket 是什麼原理?為什麼可以實現持久連線Web
- Java是如何實現跨平臺的?原理是什麼?Java
- 什麼是API介面,具體是什麼意思?API
- 什麼是介面?如何定義介面?如何實現介面?
- 深度學習是什麼深度學習
- 【學習】NPM是什麼NPM
- 學習什麼是SCN
- 什麼是SATA介面
- 什麼是介面?為什麼使用介面? 什麼時候使用介面?(轉)
- NLA有什麼用?原理是什麼?
- 什麼是爬蟲?爬蟲的工作原理是什麼呢爬蟲
- 【Linux分享】什麼是CDN?CDN加速的原理是什麼?Linux
- MVVM模式到底是什麼?實現原理剖析MVVM模式
- 什麼是SOCKS5代理 它的原理是什麼
- 什麼是光時域反射儀,OTDR的工作原理是什麼反射
- 蜘蛛池的原理是什麼
- WebSocket 是什麼原理?為什麼可以實現持久連線?有點懵!!!Web
- 什麼是介面,如何理解
- 什麼是介面測試?
- 什麼是CDN?CDN的原理和作用是什麼?
- 什麼是反向海外IP代理?其工作原理是什麼?
- 什麼是透明屏,其工作原理與優勢是什麼
- 什麼是遷移學習?什麼時候使用遷移學習?遷移學習
- kafka學習(二)-------- 什麼是KafkaKafka
- Docker 學習 一:Docker 是什麼Docker
- Docker 學習 一,Docker 是什麼Docker
- Python優勢是什麼?為什麼要學習?Python
- 什麼是cookie,什麼是sessionCookieSession
- 什麼是DNS,什麼是HostsDNS
- 什麼是模式? 什麼是框架?模式框架
- 這是什麼這是什麼
- Java是什麼_Java是做什麼的?Java
- JSONP的原理是什麼?解決什麼問題?JSON
- 區塊鏈的原理是什麼?區塊鏈