中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java適配器模式應用之電源適配器功能的示例分析

發布時間:2021-08-20 11:43:56 來源:億速云 閱讀:156 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關Java適配器模式應用之電源適配器功能的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、模式定義

存在兩種適配器模式

1 對象適配器模式,在這種適配器模式中,適配器容納一個它包裹的類對象的物理實體。

2 類適配器模式,在這種適配器模式中,適配器繼承自已實現的類。

二、模式舉例

1 模式分析

我們借用筆計本電源適配器來說明這一模式。

已經存在的交流電源
筆記本電腦
電源適配器

Java適配器模式應用之電源適配器功能的示例分析

2 適配器模式的靜態建模

Java適配器模式應用之電源適配器功能的示例分析

3 代碼舉例

3.1 抽象電源建立

package com.demo.power;
/**
 * 電源基類
 *
 * @author
 *
 */
public abstract class AbsBasePower
{
  // 電壓值
  private float power;
  // 單位
  private String unit = "V";
  // 構造方法
  public AbsBasePower(float power)
  {
    this.power = power;
  }
  public float getPower()
  {
    return power;
  }
  public void setPower(float power)
  {
    this.power = power;
  }
  public String getUnit()
  {
    return unit;
  }
  public void setUnit(String unit)
  {
    this.unit = unit;
  }
}

3.2 220v電源接口

package com.demo.power.v220;
/**
 * 220V 電源接口
 *
 * @author
 *
 */
public interface IPower220 {
  // 220V交流電源打印
  public void output220v();
}

3.3 220v電源實現類

package com.demo.power.v220;
import com.demo.power.AbsBasePower;
/**
 * 220V電源
 *
 * @author
 *
 */
public class Power220 extends AbsBasePower implements IPower220
{
  // 構造方法
  public Power220()
  {
    super(220);
  }
  // 220V電源輸出
  public void output220v()
  {
    System.out.println("----這是[" + this.getPower() + this.getUnit() + "]電源!...");
  }
}

3.4 12v電源接口

package com.demo.power.v12;
/**
 * 12V 電源接口
 *
 * @author
 *
 */
public interface IPower12 {
  // 12V電源打印
  public void output12v();
}

3.5 12v電源實現類

package com.demo.power.v12;
import com.demo.power.AbsBasePower;
/**
 * 正常的12V電源
 *
 * @author
 *
 */
public class Power12 extends AbsBasePower implements IPower12 {
  // 12V電源構造方法
  public Power12() {
    super(12);
  }
  // 12V電源輸出
  public void output12v() {
    System.out.println("----這是[" + this.getPower() + this.getUnit()
        + "]電源!...");
  }
}

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 {
  // 待轉換的對象
  private final AbsBasePower absBasePower;
  // 適配器構造方法 將待轉換對象傳入
  public AdapterPower12(AbsBasePower absBasePower) {
    this.absBasePower = absBasePower;
  }
  // 實現目標對象方法
  public void output12v() {
    // 獲得外部電源值
    float powerFloat = this.absBasePower.getPower();
    // 進行電源轉換
    if (powerFloat == 380) {
      // 380V電源轉換
      powerFloat = powerFloat / 31.67f;
    } else if (powerFloat == 220) {
      // 220V電源轉換
      powerFloat = powerFloat / 18.33f;
    } else if (powerFloat == 110) {
      // 110V電源轉換
      powerFloat = powerFloat / 9.17f;
    } else {
      System.out.println("----不能適配電源!...");
      return;
    }
    // 處理轉換結果
    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 {
  // 適配器構造方法 將待轉換對象傳入
  public AdapterPower12Ext(AbsBasePower absBasePower) {
    super(absBasePower.getPower());
  }
  // 實現目標對象方法
  @Override
  public void output12v() {
    // 獲得外部電源值
    float powerFloat = this.getPower();
    // 進行電源轉換
    if (powerFloat == 380) {
      // 380V電源轉換
      powerFloat = powerFloat / 31.67f;
    } else if (powerFloat == 220) {
      // 220V電源轉換
      powerFloat = powerFloat / 18.33f;
    } else if (powerFloat == 110) {
      // 110V電源轉換
      powerFloat = powerFloat / 9.17f;
    } else {
      System.out.println("----不能適配電源!...");
      return;
    }
    // 處理轉換結果
    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 {
  /**
   * @param args
   */
  public static void main(String[] args) {
    // 我們首先 生成一個220V電源對象!
    Power220 power220 = new Power220();
    power220.output220v();
    // 接下來,我們在生成一個12V電源對象!
    IPower12 power12 = new Power12();
    power12.output12v();
    // 最后,我們使用電源適配器 將220V電源轉換為12V電源!
    System.out.println("\n----電源適配器轉換中...");
    IPower12 adapterPower12 = new AdapterPower12(power220);
    adapterPower12.output12v();
    System.out.println("----電源適配器轉換結束!");
    // 類適配器實現
    System.out.println("\n----類適配器 電源適配器轉換中...");
    IPower12 adapterPower12Ext = new AdapterPower12Ext(power220);
    adapterPower12Ext.output12v();
    System.out.println("----類適配器 電源適配器轉換結束!");
  }
}

3.9 運行結果

----這是[220.0V]電源!...
----這是[12.0V]電源!...
----電源適配器轉換中...
----這是[12.0V]電源!...
----電源適配器轉換結束!
----類適配器 電源適配器轉換中...
----這是[12.0V]電源!...
----類適配器 電源適配器轉換結束!

三、設計原則

1使用對象組合,面向接口和抽象編程
2“開一閉”原則

四、使用場合

1 軟件系統結構需要升級或擴展,又不想影響原有系統穩定運行的時候
2 轉換類之間的差別不是很大的時候
3 想創建一個可以復用的類,該類可以與其他不相關類或不可預見類協同工作的時候

五、類適配器模式和對象適配器模式的靜態類圖

Java適配器模式應用之電源適配器功能的示例分析

關于“Java適配器模式應用之電源適配器功能的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通州区| 平泉县| 永登县| 静安区| 启东市| 布尔津县| 石泉县| 梁河县| 崇仁县| 根河市| 天全县| 抚州市| 拉萨市| 红桥区| 鸡西市| 广德县| 永福县| 托克逊县| 依安县| 潮安县| 凤山市| 卢龙县| 丹阳市| 龙海市| 启东市| 呼伦贝尔市| 岐山县| 岫岩| 广安市| 驻马店市| 海林市| 伊宁市| 翁源县| 竹山县| 于田县| 佛冈县| 玉田县| 罗定市| 庆阳市| 丽水市| 贵港市|