PHP-FPM原始碼分析
阿新 • • 發佈:2020-11-04
模式定義
介面卡模式:將一個藉口轉化成客戶希望的另一個介面,介面卡模式使介面不相容的類可以一起工作。
模式結構圖
模式分析
介面卡有如下幾個角色
1.Target(目標抽象類)
定義客戶要用的特定領域的介面,可以是個抽象類或藉口,也可以是具體類。
2.Adapter(介面卡類)
介面卡類可以呼叫另一個介面,作為一個轉化器,對Adaptee和Target進行適配,介面卡Adapter是介面卡模式的核心,在類介面卡中,他通過實現Target介面並繼承類來使兩者修昂胡聯絡。
3.Adaptee(適配者類)
適配者即被適配的角色,它定義了一個已經存在的介面。這個介面需要適配,適配類一般是一個實體類,它包含了客戶希望使用的業務方法。
4.Clientlei(客戶類)
針對目標抽象類進行程式設計。
優點:
(1)將目標類和適配類解耦
(2)增加了類的透明性和複用性
(3)靈活性和擴充套件性很好
缺點:
(1)java,C#不支援類的多重繼承。
機器人模仿狗案例
機器人介面類
package com.zck.adapter; //仿生機器人介面 public interface Robot { public void cry(); public void move(); }
狗實體類
package com.zck.adapter; public class Dog { public void wang(){ System.out.println("狗汪汪叫"); } public void run(){ System.out.println("狗快快跑"); } }
狗介面卡類
package com.zck.adapter; public class DogAdapter extends Dog implements Robot { public void cry() { System.out.println("機器人模仿"); super.wang(); } public void move() { System.out.println("機器人模仿"); super.run(); } }
客戶端類
package com.zck.adapter; public class Client { public static void main(String[] args) { DogAdapter dogAdapter = new DogAdapter(); Robot robot = dogAdapter; robot.cry(); robot.move(); } }
測試結果