程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 簡略懂得遵守接口隔離准繩的Java設計形式編程

簡略懂得遵守接口隔離准繩的Java設計形式編程

編輯:關於JAVA

簡略懂得遵守接口隔離准繩的Java設計形式編程。本站提示廣大學習愛好者:(簡略懂得遵守接口隔離准繩的Java設計形式編程)文章只能為提供參考,不一定能成為您想要的結果。以下是簡略懂得遵守接口隔離准繩的Java設計形式編程正文


界說:客戶端不該該依附它不須要的接口;一個類對另外一個類的依附應當樹立在最小的接口上。
成績由來:類A經由過程接口I依附類B,類C經由過程接口I依附類D,假如接口I關於類A和類B來講不是最小接口,則類B和類D必需去完成他們不須要的辦法。
處理計劃:將癡肥的接口I拆分為自力的幾個接口,類A和類C分離與他們須要的接口樹立依附關系。也就是采取接口隔離准繩。
舉例來講明接口隔離准繩:

 這個圖的意思是:類A依附接口I中的辦法1、辦法2、辦法3,類B是對類A依附的完成。類C依附接口I中的辦法1、辦法4、辦法5,類D是對類C依附的完成。關於類B和類D來講,固然他們都存在著用不到的辦法(也就是圖中白色字體標志的辦法),但因為完成了接口I,所以也必需要完成這些用不到的辦法。

我們起首先看一個違背接口隔離的例子:

public interface IWorker { 
  public void work(); 
  public void eat(); 
} 
 
public class Worker implements IWorker{ 
  @Override 
  public void work() { 
    // TODO 工人任務   
  } 
 
  @Override 
  public void eat() { 
    // TODO 工人吃飯 
  } 
} 
 
public class Robot implements IWorker { 
  @Override 
  public void work() { 
    // TODO 機械人任務     
  } 
 
  @Override 
  public void eat() { 
    // TODO 機械人吃飯?  
  } 
} 


因為機械人是不須要吃飯的,所以IWorker被以為是一個癡肥的接口,固然你也能夠在Robot類中的eat辦法做空完成,然則如許能夠會發生弗成估計的BUG,好比eat辦法須要消費盒飯數目的話,就會湧現纰謬應的景象。
上面是修正後的完成:

public interface IWorker { 
  public void work(); 
} 
 
public interface IDiet { 
  public void eat(); 
} 
 
public class Worker implements IWorker, IDiet{ 
  @Override 
  public void work() { 
    // TODO 工人任務   
  } 
 
  @Override 
  public void eat() { 
    // TODO 工人吃飯 
  } 
} 
 
public class Robot implements IWorker { 
  @Override 
  public void work() { 
    // TODO 機械人任務     
  } 
} 


總結:
1. 接口要盡可能小,並高內聚,不外要恰當,太細化欠好保護。
2. 假如曾經設計成了癡肥的接口,可使用適配器形式隔離它。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved