面向介面程式設計 學習 待整理
面向介面:
契約與履行;
一致性;
機制複用;程式碼複用;
在spring的jdbc程式設計中,在引入資料庫連線池的部分就做到了面向介面程式設計,以後無論換什麼資料庫連線池都不用修改程式碼
直接修改配置檔案即可。可以遮蔽到大量的底層操作,這種程式設計方式在框架中得到廣泛的應用,例如spring內部完全就
是面向介面程式設計的。
如果不大量採用面向介面程式設計,框架幾乎沒法做到熱插撥級別的鬆耦合,更別說為程式設計師帶來大量的便利性,進行大量的封裝。。。
---------------------
作者:615156165
來源:CSDN
原文:https://blog.csdn.net/u011212549/article/details/52351297
版權宣告:本文為博主原創文章,轉載請附上博文連結!
介面的雙重性:
介面與介面之間:定義機制;
介面與實現之間:定義擴充套件;定義標準;
介面就是規劃標準,有了標準去遵守就好擴充套件。
介面 抽象 很容易被鬆偶合這個詞彙忽悠,實際上就是定製一套方法,所有實現由各自去完成。
好比定義一套產品資料管理(增、刪、改、查)的抽象方法,或者介面宣告這些方法,那麼在Oracle或SQLServer的實現上只要遵循這個規劃,那麼上層只需要面向介面程式設計不用改動程式碼,而資料層可以輕鬆切換到Oracle或者是SQLServer。也就是所謂的開閉原則。
介面的好處其實要在程式設計中慢慢體會,分離實現,隔離變化。多看看設計模式上的例子就會發現介面的妙用。
介面電腦的插口
1 2 3
這三個就好似USB的介面功能。他隱藏了實際功能,但提供給使用者統一的操作介面和使用方式
認同大家的觀點 其實介面是為了更規範 大家只要去實現就OK了 和插座的道理一樣 不同的插座出來的電壓或功能就不一樣的
設計模式 分離
面向介面程式設計是面向分離程式設計,
面向抽象程式設計;
面向聯絡程式設計;
面向標準程式設計;
面向介面程式設計具有更大的穩定性;
Dependency and Coupling 依賴
面向標準程式設計
介面就是標準規範,就是定死了一個框架,你根據這個框架去執行!有了標準去遵守就容易擴充套件!我們只需要面向標準程式設計,而不用針對具體的實現類!
總結:介面也就是一種規範!面向介面程式設計就類似於現實中遵守公司規定一樣!這樣增強了系統的靈活性、可維護性,減小影響!實現專案中常說的:高內聚、低耦合!
https://blog.csdn.net/hbcztutu/article/details/78860816
https://blog.csdn.net/jj_nan/article/details/70161086
https://blog.csdn.net/qq376430645/article/details/9927225?utm_source=blogxgwz3
下面是我對面向介面程式設計的理解
優點:
1.程式結構清晰,使用方便
2.介面經過合理設計後,有利於程式設計的規範化,並可以並行開發,提高工作效率
3.實現了程式的可插拔性,對於不同的需求切換不同的實現,降低了耦合度,隨著系統複雜性的提高這個優勢會越來越明顯
4.允許多重實現,彌補了繼承的缺陷
---------------------
作者:泊川
來源:CSDN
原文:https://blog.csdn.net/wantken/article/details/31763669
版權宣告:本文為博主原創文章,轉載請附上博文連結!
面向介面程式設計和麵向物件程式設計的區別
通過上文,我想大家對介面和介面的思想內涵有了一個瞭解,那麼什麼是面向介面程式設計呢?我個人的定義是:在系統分析和架構中,分清層次和依賴關係,每個層次不是直接向其上層提供服務(即不是直接例項化在上層中),而是通過定義一組介面,僅向上層暴露其介面功能,上層對於下層僅僅是介面依賴,而不依賴具體類。
這樣做的好處是顯而易見的,首先對系統靈活性大有好處。當下層需要改變時,只要介面及介面功能不變,則上層不用做任何修改。甚至可以在不改動上層程式碼時將下層整個替換掉,就像我們將一個WD的60G硬碟換成一個希捷的160G的硬碟,計算機其他地方不用做任何改動,而是把原硬碟拔下來、新硬碟插上就行了,因為計算機其他部分不依賴具體硬碟,而只依賴一個IDE介面,只要硬碟實現了這個介面,就可以替換上去。從這裡看,程式中的介面和現實中的介面極為相似,所以我一直認為,介面(interface)這個詞用的真是神似!
為什麼要使用面向介面程式設計
https://blog.csdn.net/z_Dendy/article/details/22725539
1.關於介面的理解。
介面從更深層次的理解,應是定義(規範,約束)與實現(名實分離的原則)的分離。
我們在一般實現一個系統的時候,通常是將定義與實現合為一體,不加分離的,我認為最為理解的系統設計規範應是所有的定義與實現分離,儘管這可能對系統中的某些情況有點繁煩。
介面的本身反映了系統設計人員對系統的抽象理解。
介面應有兩類:
第一類是對一個體的抽象,它可對應為一個抽象體(abstract class);
第二類是對一個體某一方面的抽象,即形成一個抽象面(interface);
一個體有可能有多個抽象面。
抽象體與抽象面是有區別的。
https://blog.csdn.net/paul342/article/details/47272077
程式裡的介面本人理解就是和現實生活中的介面沒有什麼區別主要就是為了程式的擴充套件,就像計算機的介面一樣,設計計算機的時候在計算機上設計了USB介面,可以在以後,自己或別人來遵循這個介面開發USB介面的東西,可是是USB行動硬碟,可是是USB介面的數碼相機,是什麼我們不去關心,但是它們必須遵行介面的設計原則。。。
與面向介面程式設計對應的概念是對接。
定義介面:
實現介面:
功能對接:可替換對接;
https://bbs.csdn.net/topics/100054868
https://blog.csdn.net/hbcztutu/article/details/78860816
洞悉程式設計思想是我們學習語言過程中的必由之路,但注意對於程式設計思想的理解一定要建立在大量的程式碼實現經驗上,不然只是在口頭空談程式設計思想而不去程式設計,根本無法深入理解思想的核心。
面向物件思想的核心之一,就是模擬真實世界,把真實世界中的事物抽象成類,整個程式靠各個類的例項互相通訊、互相協作完成系統功能,這非常符合真實世界的執行狀況,也是面向物件思想的精髓。