Java设计模式-软件设计原则-接口隔离原则

推荐先阅读Java设计模式

客户端不应该被迫依赖于它不使用的方法;一个类对另一个类的依赖应该建立在最小的接口上。

下面看一个例子来理解接口隔离原则

【例】安全门案例

我们需要创建一个黑马品牌的安全门,该安全门具有防火、防水、防盗的功能。可以将防火,防水,防盗功能提取成一个接口,形成一套规范。类图如下:

上面的设计我们发现了它存在的问题,黑马品牌的安全门具有防盗,防水,防火的功能。现在如果我们还需要再创建一个传智品牌的安全门,而该安全门只具有防盗、防水功能呢?很显然如果实现SafetyDoor接口就违背了接口隔离原则,那么我们如何进行修改呢?看如下类图:

代码如下:

AntiTheft(接口):

public interface AntiTheft {
void antiTheft();
}

Fireproof(接口):

public interface Fireproof {
void fireproof();
}

Waterproof(接口):

public interface Waterproof {
void waterproof();
}

HeiMaSafetyDoor(类):

public class HeiMaSafetyDoor implements AntiTheft,Fireproof,Waterproof {
public void antiTheft() {
System.out.println("防盗");
}

public void fireproof() {
System.out.println("防火");
}


public void waterproof() {
System.out.println("防水");
}
}

ItcastSafetyDoor(类):

public class ItcastSafetyDoor implements AntiTheft,Fireproof {
public void antiTheft() {
System.out.println("防盗");
}

public void fireproof() {
System.out.println("防火");
}
}