一模式定義
存在兩種介面卡模式
1 物件介面卡模式,在這種介面卡模式中,介面卡容納乙個它包裹的類物件的物理實體。
2 類介面卡模式,在這種介面卡模式中,介面卡繼承自已實現的類。
二模式舉例
1模式分析
我們借用筆計本電源介面卡來說明這一模式。
已經存在的交流電源
膝上型電腦
電源介面卡
2介面卡模式的靜態建模
3**舉例
3.1抽象電源建立
package com.demo.power;
/** * 電源基類
* * @author
* */
public abstract class absbasepower
public float getpower()
public void setpower(float power)
public string getunit()
public void setunit(string unit)
}
3.2 220v電源介面
package com.demo.power.v220;
/** * 220v 電源介面
* * @author
* */
public inte***ce ipower220
3.3 220v電源實現類
package com.demo.power.v220;
import com.demo.power.absbasepower;
/** * 220v電源
* * @author
* */
public class power220 extends absbasepower implements ipower220
// 220v電源輸出
public void output220v()
}
3.4 12v電源介面
package com.demo.power.v12;
/** * 12v 電源介面
* * @author
* */
public inte***ce ipower12
3.5 12v電源實現類
package com.demo.power.v12;
import com.demo.power.absbasepower;
/** * 正常的12v電源
* * @author
* */
public class power12 extends absbasepower implements ipower12
// 12v電源輸出
public void output12v()
}
3.6 12v電源物件介面卡
package com.demo.adapter;
import com.demo.power.absbasepower;
import com.demo.power.v12.ipower12;
/** * 電源介面卡 (實現目標物件介面 即:12v電源介面)
* * @author
* */
public class adapterpower12 implements ipower12
// 實現目標物件方法
public void output12v() else if (powerfloat == 220) else if (powerfloat == 110) else
// 處理轉換結果
powerfloat = (int) (powerfloat * 10) / 10.0f;
system.out.println("----這是[" + powerfloat + this.absbasepower.getunit()
+ "]電源!...");
}}
3.7 12v電源類介面卡
package com.demo.adapter;
import com.demo.power.absbasepower;
import com.demo.power.v12.ipower12;
/** * 電源介面卡 (實現目標物件介面 即:12v電源介面) 類介面卡 模式
* * @author
* */
public class adapterpower12ext extends absbasepower implements ipower12
// 實現目標物件方法
@override
public void output12v() else if (powerfloat == 220) else if (powerfloat == 110) else
// 處理轉換結果
powerfloat = (int) (powerfloat * 10) / 10.0f;
system.out.println("----這是[" + powerfloat + this.getunit() + "]電源!...");
}}
3.8 測試介面卡
package com.demo;
import com.demo.adapter.adapterpower12;
import com.demo.adapter.adapterpower12ext;
import com.demo.power.v12.ipower12;
import com.demo.power.v12.power12;
import com.demo.power.v220.power220;
/** * 客戶端程式呼叫
* * @author
* */
public class client
}
3.9 執行結果----這是[220.0v]電源!...
----這是[12.0v]電源!...
----電源介面卡轉換中...
----這是[12.0v]電源!...
----電源介面卡轉換結束!
----類介面卡 電源介面卡轉換中...
----這是[12.0v]電源!...
----類介面卡 電源介面卡轉換結束!
三 設計原則
1使用物件組合,面向介面和抽象程式設計
2「開一閉」原則
四 使用場合
1軟體系統結構需要公升級或擴充套件,又不想影響原有系統穩定執行的時候
2轉換類之間的差別不是很大的時候
3想建立乙個可以復用的類,該類可以與其他不相關類或不可預見類協同工作的時候
五 類介面卡模式和物件介面卡模式的靜態類圖
介面卡模式 預設介面卡,類介面卡,物件介面卡
模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...
介面卡模式 日誌介面卡
在寫 策略模式 的時候,筆者就用 日誌 舉了例子,這篇文章還是要以日誌為例。日誌的重要性筆者這裡不再多言了,大家在系統開發中記錄日誌的時候,有沒有考慮過這樣乙個問題 萬一使用的日誌框架要更換呢?一旦更換你需要怎麼做?修改所有的 替換logger類嗎?如果這麼做的話,不管是對系統,還是對開發者來說,都...