本文主要介绍的是软件设计原则中的接口隔离原则。
接口隔离原则
:指的是客户端不应该被迫依赖于它不使用的方法;概念有些抽象让我们逐句理解一下:
安全门案例
来理解接口隔离原则:
/**
* @Description:安全门接口
*/
public interface SafetyDoor {
//防盗
void antiTheft();
//防火
void fireProof();
//防水
void waterProof();
}
public class AileenSafetyDoor implements SafetyDoor{
@Override
public void antiTheft() {
System.out.println("防盗");
}
@Override
public void fireProof() {
System.out.println("防火");
}
@Override
public void waterProof() {
System.out.println("防水");
}
}
public class ClientTest {
public static void main(String[] args) {
AileenSafetyDoor door = new AileenSafetyDoor();
door.antiTheft();
door.fireProof();
door.waterProof();
}
}
接口隔离原则
来实现,如下所示:AileenSafetyDoor
的具体代码实现:package principles.InterfaceIsolation.after;
/**
* @Description:防盗接口
*/
public interface AntiTheft {
void antiTheft();
}
package principles.InterfaceIsolation.after;
/**
* @Description:防火接口
*/
public interface Fireproof {
void fireproof();
}
package principles.InterfaceIsolation.after;
/**
* @Description:防水接口
*/
public interface Waterproof {
void waterproof();
}
package principles.InterfaceIsolation.after;
public class AileenSafetyDoor implements AntiTheft , Fireproof , Waterproof{
@Override
public void antiTheft() {
System.out.println("aileen防盗");
}
@Override
public void fireproof() {
System.out.println("aileen防火");
}
@Override
public void waterproof() {
System.out.println("aileen防水");
}
}
package principles.InterfaceIsolation.after;
public class ClientTest {
public static void main(String[] args) {
AileenSafetyDoor door = new AileenSafetyDoor();
door.antiTheft();
door.fireproof();
door.waterproof();
}
}
package principles.InterfaceIsolation.after;
public class XimengziDoor implements AntiTheft , Fireproof{
@Override
public void antiTheft() {
System.out.println("西门子版防盗");
}
@Override
public void fireproof() {
System.out.println("西门子版防火");
}
}
package principles.InterfaceIsolation.after;
public class ClientTest {
public static void main(String[] args) {
AileenSafetyDoor door = new AileenSafetyDoor();
door.antiTheft();
door.fireproof();
door.waterproof();
System.out.println("==========================");
XimengziDoor xidoor = new XimengziDoor();
xidoor.antiTheft();
xidoor.fireproof();
}
}