软件设计原则——接口隔离原则
生活随笔
收集整理的這篇文章主要介紹了
软件设计原则——接口隔离原则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
客戶端不應該被迫依賴于它不使用的方法;
一個類對另一個類的依賴應該建立在最小的接口上。
【例】安全門案例
我們需要創(chuàng)建一個黑馬品牌的安全門,該安全門具有防火、防水、防盜的功能。
可以將防火,防水,防盜功能提取成一個接口,形成一套規(guī)范。
類圖如下:
SafetyDoor.java
package com.itheima.principles.demo4.before;/*** @version v1.0* @ClassName: SafetyDoor* @Description: 安全門接口* @Author: dym*/ public interface SafetyDoor {//防盜void antiTheft();//防火void fireProof();//防水void waterProof(); }HeimaSafetyDoor.java
package com.itheima.principles.demo4.before;/*** @version v1.0* @ClassName: HeimaSafetyDoor* @Description: 黑馬品牌的安全門* @Author: dym*/ public class HeimaSafetyDoor implements SafetyDoor {public void antiTheft() {System.out.println("防盜");}public void fireProof() {System.out.println("防火");}public void waterProof() {System.out.println("防水");} }Client.java
package com.itheima.principles.demo4.before;/*** @version v1.0* @ClassName: Client* @Description: TODO(一句話描述該類的功能)* @Author: dym*/ public class Client {public static void main(String[] args) {HeimaSafetyDoor door = new HeimaSafetyDoor();door.antiTheft();door.fireProof();door.waterProof();} }上面的設計我們發(fā)現了它存在的問題,黑馬品牌的安全門具有防盜,防水,防火的功能。
現在如果我們還需要再創(chuàng)建一個傳智品牌的安全門,而該安全門只具有防盜、防水功能呢?
很顯然如果實現SafetyDoor接口就違背了接口隔離原則,那么我們如何進行修改呢?
看如下類圖:
?
AntiTheft.java
package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: AntiTheft* @Description: 防盜接口* @Author: dym*/ public interface AntiTheft {void antiTheft(); }Fireproof.java
package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: Fireproof* @Description: 防火接口* @Author: dym*/ public interface Fireproof {void fireproof(); }Waterproof.java
package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: Waterproof* @Description: 防水接口* @Author: dym*/ public interface Waterproof {void waterproof(); }HeiMaSafetyDoor.java
package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: HeiMaSafetyDoor* @Description: TODO(一句話描述該類的功能)* @Author: dym*/ 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.java
package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: ItcastSafetyDoor* @Description: 傳智安全門* @Author: dym*/ public class ItcastSafetyDoor implements AntiTheft,Fireproof {public void antiTheft() {System.out.println("防盜");}public void fireproof() {System.out.println("防火");} }Client.java
package com.itheima.principles.demo4.after;import com.itheima.principles.demo4.before.HeimaSafetyDoor;/*** @version v1.0* @ClassName: Client* @Description: TODO(一句話描述該類的功能)* @Author: dym*/ public class Client {public static void main(String[] args) {//創(chuàng)建黑馬安全門對象HeimaSafetyDoor door = new HeimaSafetyDoor();//調用功能door.antiTheft();door.fireProof();door.waterProof();System.out.println("============");//創(chuàng)建傳智安全門對象ItcastSafetyDoor door1 = new ItcastSafetyDoor();//調用功能door1.antiTheft();door1.fireproof();} }總結
以上是生活随笔為你收集整理的软件设计原则——接口隔离原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件设计原则——依赖倒转原则
- 下一篇: 软件设计原则——迪米特法则