充分利用面向?qū)ο笳Z言的接口特性
原創(chuàng)【51CTO快譯】現(xiàn)代的面向?qū)ο笳Z言源自C++的特點之一是使用接口。一個接口是一個類,它沒有具體的實現(xiàn)過程,只提供一個用來訪問其資源的接口。(51CTO編輯:有關(guān)面向?qū)ο笳Z言的更多特點,可以參考面向?qū)ο蟮乃季S過程,以及面向?qū)ο缶幊讨蓄愒O(shè)計的幾個原則一文)
每個接口需要用一些具體的類來實現(xiàn),但優(yōu)點是,使得實現(xiàn)細節(jié)可以可容易地獨立出來。因此,你不必同時擔心實現(xiàn)和接口問題。
接口可以幫助我不斷建立易于測試、修改、而且不依賴于具體類的軟件。接口可能不是最***的面向?qū)ο缶幊?,但它在編程、集體的類之上提供了眾多的優(yōu)勢。
◆接口是你和你的其他應(yīng)用程序之間的一項合約。該合約由編譯器保證,因此無法在不改變接口的情況下改變你的類中的服務(wù)。
◆創(chuàng)建一個接口可以讓你好好思考你的類需要給客戶提供哪些功能。建立接口的正規(guī)步驟需要你考慮什么是類中必不可少的,什么是可選的。刪除那些并不重要,然后你將擁有一個堅實的基礎(chǔ)。
◆接口可以混合。所以即使你想要的所有功能并沒有在一個接口中呈現(xiàn),你也不必擔心。你可以隨時添加額外的接口,來為具體用例提供所需的方法。使用接口,在建立新功能時,你不會覺得像使用具體類那樣受到限制。接口可以隨時混合和匹配。
◆接口讓軟件測試更容易。由于沒有被束縛在具體的實現(xiàn)過程上,你可以通過定義你自己的具體的類,來自由更改測試類所使用的代碼。這就會更加模塊化,測試結(jié)果更加清晰。
接口的缺點
接口的缺點非常少,唯一主要的缺點是,你需要花費一些精力來維護一個獨立的實體。但是,現(xiàn)代編程工具使這件事變得很容易,因此它不再像從前那么困難。
使用接口的另一個需要強調(diào)的方面是,C++中使用虛指針的實現(xiàn)問題。但是,你必須注意,現(xiàn)代面向?qū)ο笳Z言是基于虛擬機的。這種語言把每種方法描述為一個虛指針,除非系統(tǒng)決定內(nèi)聯(lián)方法(在這種情況下,不存在實現(xiàn)問題)。除非你有非常重要的軟件(在這種情況下,你可能需要使用的C/ C + +)你不應(yīng)該擔心這種實現(xiàn)問題,因為虛擬機會很好地解決這種問題。如果對虛擬機的概念仍然不很了解,可以參考詳細介紹什么是Java虛擬機一文。
結(jié)論
接口是一個現(xiàn)代化的機制,用來改進軟件設(shè)計。盡管這樣,接口還沒有被大多數(shù)開發(fā)人員充分利用。我們應(yīng)該利用接口作為應(yīng)用程序各個部分之間默認的通信方法,只在建立對象(工廠方法)以及向包中加入類時使用具體類。
原文:When in Doubt, Create an Interface by Carlos Oliveira
【相關(guān)閱讀】