版權歸原作者所有,如有侵權,請聯(lián)系我們

[科普中國]-接口模式

科學百科
原創(chuàng)
科學百科為用戶提供權威科普內(nèi)容,打造知識科普陣地
收藏

在系統(tǒng)的設計時刻我們常常遇到這樣一個問題:類Client的實例instanceClient希望使用另一個對象instanceX提供的服務service,但在設計時刻我們并不能確定對象instanceX究竟屬于哪個類。常見的解決辦法是:將對象instanceX提供的服務service抽象為一個接口ServiceProvider,然后讓對象instanceClient通過持有接口ServiceProvider的實例來使用服務service。這種通過接口間接獲得服務的解決方案就是接口模式

簡介接口模式還可以有一些變化的形式:不止用一個接口抽象一個對象提供的服務,還可以用一組接口抽象一群對象的交互。1

效果接口模式有如下效果:

類Client不直接依賴于任何實在(concrete)的服務提供者,而僅僅依賴于輕量的接口,這樣就降低了系統(tǒng)的耦合程度。

因為接口將服務獨立出來,服務的提供者就可以變化。

因為引入了接口來間接提供服務,所以設計方案變得更加復雜。2

評論接口模式直接體現(xiàn)了面向對象的系統(tǒng)設計的原則之一:“針對接口編程,而不是針對實現(xiàn)編程”。

許多其他的模式都應用了接口模式,只不過更為特殊。下表列出了作為接口模式特例的其他模式,并且指明了這些模式將哪些服務抽象為接口。2

|| ||

設計模式在軟件工程中,設計模式(design pattern)是對軟件設計中普遍存在(反復出現(xiàn))的各種問題,所提出的解決方案。這個術語是由埃里希·伽瑪(Erich Gamma)等人在1990年代從建筑設計領域引入到計算器科學的。

設計模式并不直接用來完成代碼的編寫,而是描述在各種不同情況下,要怎么解決問題的一種方案。面向對象設計模式通常以類別或對象來描述其中的關系和相互作用,但不涉及用來完成應用程序的特定類別或對象。設計模式能使不穩(wěn)定依賴于相對穩(wěn)定、具體依賴于相對抽象,避免會引起麻煩的緊耦合,以增強軟件設計面對并適應變化的能力。

并非所有的軟件模式都是設計模式,設計模式特指軟件“設計”層次上的問題。還有其他非設計模式的模式,如架構模式。同時,算法不能算是一種設計模式,因為算法主要是用來解決計算上的問題,而非設計上的問題。

隨著軟件開發(fā)社群對設計模式的興趣日益增長,已經(jīng)出版了一些相關的專著,定期召開相應的研討會,而且沃德·坎寧安(Ward Cunningham)為此發(fā)明了WikiWiki用來交流設計模式的經(jīng)驗。

本詞條內(nèi)容貢獻者為:

黃倫先 - 副教授 - 西南大學