簡略懂得遵守接口隔離准繩的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. 假如曾經設計成了癡肥的接口,可使用適配器形式隔離它。