您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Java面向?qū)ο蟮慕涌诟綦x原則怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Java面向?qū)ο蟮慕涌诟綦x原則怎么實現(xiàn)”吧!
Interface Segregation Principle
客戶端不應(yīng)依賴它不需要的接口
類間的依賴關(guān)系應(yīng)該建立在最小的接口上
其實通俗來理解就是,不要在一個接口里面放很多的方法,這樣會顯得這個類很臃腫。接口應(yīng)該盡量細(xì)化,一個接口對應(yīng)一個功能模塊,同時接口里面的方法應(yīng)該盡可能的少,使接口更加靈活輕便?;蛟S有的人認(rèn)為接口隔離原則和單一職責(zé)原則很像,但兩個原則還是存在著明顯的區(qū)別。單一職責(zé)原則是在業(yè)務(wù)邏輯上的劃分,注重的是職責(zé)。接口隔離原則是基于接口設(shè)計考慮。例如一個接口的職責(zé)包含10個方法,這10個方法都放在同一接口中,并且提供給多個模塊調(diào)用,但不同模塊需要依賴的方法是不一樣的,這時模塊為了實現(xiàn)自己的功能就不得不實現(xiàn)一些對其沒有意義的方法,這樣的設(shè)計是不符合接口隔離原則的。接口隔離原則要求"盡量使用多個專門的接口"專門提供給不同的模塊。
類A通過接口I依賴類B,類C通過接口I依賴類D,如果接口I對于類A和類B來說不是最小接口,則類B和類D必須去實現(xiàn)他們不需要的方法。
舉例:
public interface School {
/**
* 上課
*/
void attendClass();
/**
* 下課
*/
void afterClass();
/**
* 學(xué)習(xí)
*/
void learn();
/**
* 講課
*/
void lecture();
}
假設(shè)此時有一個People類,它的角色是學(xué)生,實現(xiàn)了School接口。它就會被迫實現(xiàn)“講課”這個方法,事實它是不需要該方法的。這就造成了代碼的冗余,使我們的代碼變得臃腫。
將臃腫的接口I拆分為獨立的幾個接口,類A和類C分別與他們需要的接口建立依賴關(guān)系。
舉例:學(xué)校接口
public interface School {
/**
* 上課
*/
void attendClass();
/**
* 下課
*/
void afterClass();
}
老師接口
public interface Teacher {
/**
* 講課
*/
void lecture();
}
學(xué)生接口
public interface School {
/**
* 學(xué)習(xí)
*/
void learn();
}
通過上面的拆分我們就可以有效避免冗余代碼的產(chǎn)生,進(jìn)而還可以促使我們的代碼變得更加靈活。
一個類如果要實現(xiàn)一個接口,那么就要實現(xiàn)這個接口要求的所有方法,如果這個接口里面包含這個類不需要的方法,那么就會造成接口污染,這是不好的設(shè)計,會對系統(tǒng)留下隱患。
一個類是可以同時實現(xiàn)多個接口的,所以將一個臃腫的接口分割為若干個小接口,通過小接口的不同組合可以滿足更多的需求。
定制服務(wù)就是單獨為一個個體提供優(yōu)良的服務(wù)。我們在做系統(tǒng)設(shè)計時也需要考慮對系統(tǒng)之間或模塊之間的接口提供定制服務(wù)。提供定制服務(wù)就必然有一個需求:只提供訪問者需要的方法。這也是可以通過細(xì)化接口實現(xiàn)的。
什么是高內(nèi)聚?高內(nèi)聚就是提高接口、類、模塊的處理能力,減少對外的交互。比如說,你告訴你的下屬“一個小時之內(nèi)去月球搬一塊石頭回來”,然后你就躺在海灘上曬著太陽喝著果汁,一個小時之后你的下屬就搬著一塊月亮上的石頭回來給你了。這種不講任何條件,不需要你關(guān)心任何細(xì)節(jié),立即完成任務(wù)的行為就是高內(nèi)聚的表現(xiàn)。
具體到接口中,還是盡量細(xì)化你的接口。接口是對外界的承諾,承諾越少對系統(tǒng)的開發(fā)越有利,變更的風(fēng)險也就越少,同時也有利于降低成本。
到此,相信大家對“Java面向?qū)ο蟮慕涌诟綦x原則怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。