介面卡模式應用 電源介面卡

2021-08-28 01:35:19 字數 3992 閱讀 4685

一模式定義

存在兩種介面卡模式

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類嗎?如果這麼做的話,不管是對系統,還是對開發者來說,都...