接口分離原則
接口分離原則的核心思想是:不該該強迫客戶程序依賴它們不須要使用的方法。英文縮寫ISP,即Interface Segregation Principle。其實接口分離原則的意思就是:一個接口不須要提供太多的行爲,一個接口應該只提供一種對外的功能,不該該 把全部的操做都封裝到一個接口中。
java這裏的「接口」指的不單單是經過interface關鍵字定義的接口,接口分爲以下兩種。spa
對象接口。java中聲明的一個類,經過new關鍵字產生的一個實例,它是對一個類型的事物的描述,這也是一種接口。設計
類接口。這中接口就是經過關鍵字interface 定義的接口。對象
也就是說,接口分離原則要求的是在一個模塊中應該只依賴它須要的接口,以保證接口的小純潔。並且須要保證接口應該儘可能小,即設計接口的時候應該讓接口儘可能細化,不要定義太臃腫的接口(好比接口中有不少不相干的邏輯方法聲明)。接口
接口分離原則與單一職責有些類似,不過不一樣在於:單一職責原則要求的是類和接口職責單一,注重的是職責,是業務邏輯上的劃分。而接口分離原則要求的是接口的方法儘可能少,針對一個模塊儘可能有用。ip
在使用接口分離原則的時候,須要有一些規範。ci
接口儘可能小:接口儘可能小,這主要是爲了保證一個接口只服務於一個子模塊或者業務邏輯。io
接口高內聚:接口高內聚是對內高度依賴,對外儘量隔離。即一個接口內部聲明的方法相互之間都與某一個子模塊相關,且是這個子模塊必須的。接口設計
接口設計是有限度的:若是徹底遵循接口分離原則的話,會出現一個問題,即接口的設計力度會愈來愈小,這樣就形成了接口數量劇增,系統複雜度一會兒增長了,而不是真實項目所須要的,因此在使用這個原則的時候,還要在特定的項目中,根據經驗或嘗試去判斷,但沒有一個固定的標準。程序