日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
設(shè)計(jì)模式6大原則:接口隔離原則

首先看看接口隔離原則的定義,有兩種定義

第一種:Clients should not be forced to depend upon interfaces that they don't use.(客戶端不應(yīng)該強(qiáng)行以來(lái)它不需要的接口)

第二種:The dependency of one class to another one should depend on the smallest possible interface.(類間的依賴關(guān)系應(yīng)該建立在最小的接口上)

而這里的接口,卻不僅僅指的是通過(guò)interface關(guān)鍵字定義的接口,接口分為2種:

1、對(duì)象接口(Object Interface)

JAVA中聲明的一個(gè)類,通過(guò)new關(guān)鍵字產(chǎn)生的一個(gè)實(shí)例,它是對(duì)一個(gè)類型的事物的描述,這也是一種接口。例如:

Phone phone = new Phone();這里的類Person就是實(shí)例phone的一個(gè)接口

2、類接口(Class Interface)

這種接口就是通過(guò)interface關(guān)鍵字定義的接口了

也就是說(shuō),接口隔離原則要求的是在一個(gè)模塊應(yīng)該只依賴它需要的接口,以保證接口的小純潔。而且需要保證接口應(yīng)該盡量小,即設(shè)計(jì)接口的時(shí)候應(yīng)該讓接口盡量細(xì)化,不要定義太臃腫的接口(比如接口中有很多不相干的邏輯的方法聲明)。

接口隔離原則與單一職責(zé)原則有些相似,不過(guò)不同在于:?jiǎn)我宦氊?zé)原則要求的是類和接口職責(zé)單一,注重的是職責(zé),是業(yè)務(wù)邏輯上的劃分。而接口隔離原則要求的是接口的方法盡量少,盡量有用(針對(duì)一個(gè)模塊)

在使用接口隔離原則的時(shí)候需要有一些規(guī)范:

1.接口盡量小

接口盡量小主要是為了保證一個(gè)接口只服務(wù)一個(gè)子模塊或者業(yè)務(wù)邏輯

2.接口高內(nèi)聚

接口高內(nèi)聚是對(duì)內(nèi)高度依賴,對(duì)外盡可能隔離。即一個(gè)接口內(nèi)部的聲明的方法相互之間都與某一個(gè)子模塊相關(guān),且是這個(gè)子模塊必須的。

3.接口設(shè)計(jì)是有限度的

但是如果完全遵循接口隔離原則的話,會(huì)出現(xiàn)一個(gè)問(wèn)題。即接口的設(shè)計(jì)力度會(huì)越來(lái)越小,這樣就造成了接口數(shù)量劇增,系統(tǒng)復(fù)雜度一下子增加了,而這不是真實(shí)項(xiàng)目所需要的,所以在使用這個(gè)原則的時(shí)候還要在特定的項(xiàng)目,根據(jù)經(jīng)驗(yàn)或者嘗試判斷,不過(guò)沒(méi)有一個(gè)固定的標(biāo)準(zhǔn)。

舉個(gè)例子

在春熙路上逛街,到處都是女的,有穿著絲襪的大媽(惡心一下),有文靜的女生,有性感的辣妹,總之很多女的。然而當(dāng)你對(duì)前面喊一聲“美女,錢掉了”,估計(jì)前面連同大媽一起回頭看看,以為在叫自己。如今美女這個(gè)詞已經(jīng)變得大眾化了,反正跟女的打招呼就說(shuō)美女。但是真正的美女是這樣嗎,男淫們心中的美女應(yīng)該是這樣的:身材好、長(zhǎng)相好、氣質(zhì)佳。

IPrettyGirl.java:定義美女標(biāo)準(zhǔn)

 
 
 
  1. //定義美女接口  
  2. public interface IPrettyGirl {  
  3.     //長(zhǎng)相好  
  4.     public void greatLooks();  
  5.     //好身材  
  6.     public void greatFigure();  
  7.     //氣質(zhì)佳  
  8.     public void greatTemperament();  

PrettyGril.java:實(shí)現(xiàn)美女類

 
 
 
  1. public class PrettyGirl implements IPrettyGirl {  
  2.     private String name;  
  3.     //構(gòu)造函數(shù),美女名字  
  4.     public PrettyGirl(String name)  
  5.     {  
  6.         this.name = name;  
  7.     }  
  8.     //好身材  
  9.     @Override 
  10.     public void greatFigure() {  
  11.         System.out.println(name+":身材非常好");  
  12.     }  
  13.     //好長(zhǎng)相  
  14.     @Override 
  15.     public void greatLooks() {  
  16.         System.out.println(name+":長(zhǎng)相非常好");  
  17.     }  
  18.     //好氣質(zhì)  
  19.     @Override 
  20.     public void greatTemperament() {  
  21.         System.out.println(name+":氣質(zhì)非常好");  
  22.     }  
  23.    

AMan:是個(gè)抽象類,抽象出一個(gè)男人來(lái)

 
 
 
  1. public abstract class AMan {  
  2.     protected IPrettyGirl prettyGirl;  
  3.     public AMan(IPrettyGirl prettyGirl)  
  4.     {  
  5.         this.prettyGirl = prettyGirl;  
  6.     }  
  7.        
  8.     //帥哥開始找美女啦  
  9.     public abstract void findGirl();  

Man:

 
 
 
  1. public class Man extends AMan {  
  2.    
  3.     public Man(IPrettyGirl prettyGirl) {  
  4.         super(prettyGirl);  
  5.     }  
  6.    
  7.     @Override 
  8.     public void findGirl() {  
  9.         System.out.println("美女在這里:----------------------");  
  10.         super.prettyGirl.greatLooks();  
  11.         super.prettyGirl.greatFigure();  
  12.         super.prettyGirl.greatTemperament();  
  13.            
  14.     }  
  15.    

場(chǎng)景類,春熙路,帥哥開始尋找美女了

 
 
 
  1. public class ChunxiRoad {  
  2.     public static void main(String args[])  
  3.     {  
  4.         IPrettyGirl jiajia = new PrettyGirl("佳佳");  
  5.         AMan man = new Man(jiajia);  
  6.         man.findGirl();  
  7.     }  

運(yùn)行結(jié)果:

美女在這里:---------------------- 
佳佳:長(zhǎng)相非常好
佳佳:身材非常好
佳佳:氣質(zhì)非常好

但是這里有個(gè)問(wèn)題,接口劃分的不是很清晰,比如有些男人認(rèn)為某些女生長(zhǎng)相好,身材好就是美女(而不管這個(gè)女的素質(zhì)啥樣,比如那些“壓脈帶”)。而某些女生雖然長(zhǎng)相一般,身材也一般,但是氣質(zhì)很好,這就是某些宅男心目中的氣質(zhì)型美女,或者三者具備。所以需要把接口劃分的再細(xì)一點(diǎn)以滿足不同男人的審美觀。

我們把接口分為兩種:

好身材

 
 
 
  1. public interface IGreatBody {  
  2.     //好長(zhǎng)相  
  3.     public void greatLooks();  
  4.     //身材  
  5.     public void greatFigure();  

好氣質(zhì)

 
 
 
  1. public interface IGreatTemperament {  
  2.     //氣質(zhì)好  
  3.     public void greatTemperament();  

然后我們就可以根據(jù)自己的需求來(lái)尋找自己心目中認(rèn)為的美女啦,舉個(gè)例子

上面的AMan和Man傳遞的接口變?yōu)镮GreatBody

接下來(lái),我們來(lái)到了--東京??吹搅薱ang老師

 
 
 
  1. public class Tokyo {  
  2.     public static void main(String args[])  
  3.     {  
  4.         IGreatBody canglaoshi = new PrettyGirl("cang老師");  
  5.         AMan man = new Man(canglaoshi);  
  6.         man.findGirl();  
  7.     }  

運(yùn)行結(jié)果:

美女在這里:---------------------- 
cang老師:長(zhǎng)相非常好 
cang老師:身材非常好 

 原文鏈接:http://www.cnblogs.com/loulijun/archive/2012/03/07/2382247.html


文章題目:設(shè)計(jì)模式6大原則:接口隔離原則
本文地址:http://www.5511xx.com/article/cdjhids.html