欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java適配器模式應(yīng)用之電源適配器功能詳解

 更新時間:2018年05月16日 10:19:52   作者:chengqiuming  
這篇文章主要介紹了Java適配器模式應(yīng)用之電源適配器功能,較為詳細(xì)的分析了適配器模式的概念、原理及Java基于適配器模式實現(xiàn)電源適配器功能的相關(guān)操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了Java適配器模式應(yīng)用之電源適配器功能。分享給大家供大家參考,具體如下:

一、模式定義

存在兩種適配器模式

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

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

二、模式舉例

1 模式分析

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

已經(jīng)存在的交流電源
筆記本電腦
電源適配器

2 適配器模式的靜態(tài)建模

3 代碼舉例

3.1 抽象電源建立

package com.demo.power;
/**
 * 電源基類
 *
 * @author
 *
 */
public abstract class AbsBasePower
{
  // 電壓值
  private float power;
  // 單位
  private String unit = "V";
  // 構(gòu)造方法
  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電源實現(xiàn)類

package com.demo.power.v220;
import com.demo.power.AbsBasePower;
/**
 * 220V電源
 *
 * @author
 *
 */
public class Power220 extends AbsBasePower implements IPower220
{
  // 構(gòu)造方法
  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電源實現(xiàn)類

package com.demo.power.v12;
import com.demo.power.AbsBasePower;
/**
 * 正常的12V電源
 *
 * @author
 *
 */
public class Power12 extends AbsBasePower implements IPower12 {
  // 12V電源構(gòu)造方法
  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;
/**
 * 電源適配器 (實現(xiàn)目標(biāo)對象接口 即:12V電源接口)
 *
 * @author
 *
 */
public class AdapterPower12 implements IPower12 {
  // 待轉(zhuǎn)換的對象
  private final AbsBasePower absBasePower;
  // 適配器構(gòu)造方法 將待轉(zhuǎn)換對象傳入
  public AdapterPower12(AbsBasePower absBasePower) {
    this.absBasePower = absBasePower;
  }
  // 實現(xiàn)目標(biāo)對象方法
  public void output12v() {
    // 獲得外部電源值
    float powerFloat = this.absBasePower.getPower();
    // 進(jìn)行電源轉(zhuǎn)換
    if (powerFloat == 380) {
      // 380V電源轉(zhuǎn)換
      powerFloat = powerFloat / 31.67f;
    } else if (powerFloat == 220) {
      // 220V電源轉(zhuǎn)換
      powerFloat = powerFloat / 18.33f;
    } else if (powerFloat == 110) {
      // 110V電源轉(zhuǎn)換
      powerFloat = powerFloat / 9.17f;
    } else {
      System.out.println("----不能適配電源!...");
      return;
    }
    // 處理轉(zhuǎn)換結(jié)果
    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;
/**
 * 電源適配器 (實現(xiàn)目標(biāo)對象接口 即:12V電源接口) 類適配器 模式
 *
 * @author
 *
 */
public class AdapterPower12Ext extends AbsBasePower implements IPower12 {
  // 適配器構(gòu)造方法 將待轉(zhuǎn)換對象傳入
  public AdapterPower12Ext(AbsBasePower absBasePower) {
    super(absBasePower.getPower());
  }
  // 實現(xiàn)目標(biāo)對象方法
  @Override
  public void output12v() {
    // 獲得外部電源值
    float powerFloat = this.getPower();
    // 進(jìn)行電源轉(zhuǎn)換
    if (powerFloat == 380) {
      // 380V電源轉(zhuǎn)換
      powerFloat = powerFloat / 31.67f;
    } else if (powerFloat == 220) {
      // 220V電源轉(zhuǎn)換
      powerFloat = powerFloat / 18.33f;
    } else if (powerFloat == 110) {
      // 110V電源轉(zhuǎn)換
      powerFloat = powerFloat / 9.17f;
    } else {
      System.out.println("----不能適配電源!...");
      return;
    }
    // 處理轉(zhuǎn)換結(jié)果
    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;
/**
 * 客戶端程序調(diào)用
 *
 * @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電源轉(zhuǎn)換為12V電源!
    System.out.println("\n----電源適配器轉(zhuǎn)換中...");
    IPower12 adapterPower12 = new AdapterPower12(power220);
    adapterPower12.output12v();
    System.out.println("----電源適配器轉(zhuǎn)換結(jié)束!");
    // 類適配器實現(xiàn)
    System.out.println("\n----類適配器 電源適配器轉(zhuǎn)換中...");
    IPower12 adapterPower12Ext = new AdapterPower12Ext(power220);
    adapterPower12Ext.output12v();
    System.out.println("----類適配器 電源適配器轉(zhuǎn)換結(jié)束!");
  }
}

3.9 運(yùn)行結(jié)果

----這是[220.0V]電源!...
----這是[12.0V]電源!...
----電源適配器轉(zhuǎn)換中...
----這是[12.0V]電源!...
----電源適配器轉(zhuǎn)換結(jié)束!
----類適配器 電源適配器轉(zhuǎn)換中...
----這是[12.0V]電源!...
----類適配器 電源適配器轉(zhuǎn)換結(jié)束!

三、設(shè)計原則

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

四、使用場合

1 軟件系統(tǒng)結(jié)構(gòu)需要升級或擴(kuò)展,又不想影響原有系統(tǒng)穩(wěn)定運(yùn)行的時候
2 轉(zhuǎn)換類之間的差別不是很大的時候
3 想創(chuàng)建一個可以復(fù)用的類,該類可以與其他不相關(guān)類或不可預(yù)見類協(xié)同工作的時候

五、類適配器模式和對象適配器模式的靜態(tài)類圖

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • RocketMQ實現(xiàn)消息分發(fā)的步驟

    RocketMQ實現(xiàn)消息分發(fā)的步驟

    RocketMQ 實現(xiàn)消息分發(fā)的核心機(jī)制是通過 Topic、Queue 和 Consumer Group 的配合實現(xiàn)的,下面給大家介紹RocketMQ實現(xiàn)消息分發(fā)的步驟,感興趣的朋友一起看看吧
    2024-03-03
  • Java中內(nèi)部類使用方法實戰(zhàn)案例分析

    Java中內(nèi)部類使用方法實戰(zhàn)案例分析

    這篇文章主要介紹了Java中內(nèi)部類使用方法,結(jié)合具體案例形式分析了Java內(nèi)部類原理、調(diào)用方法及相關(guān)使用注意事項,需要的朋友可以參考下
    2019-09-09
  • Java如何隨機(jī)生成圖片驗證碼

    Java如何隨機(jī)生成圖片驗證碼

    這篇文章主要為大家詳細(xì)介紹了Java如何隨機(jī)生成圖片驗證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Java中String判斷值為null或空及地址是否相等的問題

    Java中String判斷值為null或空及地址是否相等的問題

    這篇文章主要介紹了Java中String判斷值為null或空及地址是否相等的問題,文中舉了簡單的例子對字符串類型的值和地址問題進(jìn)行講解,需要的朋友可以參考下
    2016-01-01
  • 使用maven實現(xiàn)有關(guān)Jsoup簡單爬蟲的步驟

    使用maven實現(xiàn)有關(guān)Jsoup簡單爬蟲的步驟

    這篇文章主要介紹了使用maven實現(xiàn)有關(guān)Jsoup簡單爬蟲的步驟,文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • SpringBoot實現(xiàn)PDF添加水印的示例

    SpringBoot實現(xiàn)PDF添加水印的示例

    本文主要介紹了SpringBoot實現(xiàn)PDF添加水印的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • SpringMVC中處理靜態(tài)資源的過程詳解

    SpringMVC中處理靜態(tài)資源的過程詳解

    本文給大家介紹SpringMVC中處理靜態(tài)資源的過程,結(jié)合示例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • Spring中事務(wù)管理的四種方法(銀行轉(zhuǎn)賬為例)

    Spring中事務(wù)管理的四種方法(銀行轉(zhuǎn)賬為例)

    這篇文章主要給大家介紹了關(guān)于Spring中事務(wù)管理的四種方法,文中是以銀行轉(zhuǎn)賬為例,通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • Java實例講解注解的應(yīng)用

    Java實例講解注解的應(yīng)用

    JAVA注解?Annotation(注解)是JDK1.5及以后版本引入的。它可以用于創(chuàng)建文檔,跟蹤代碼中的依賴性,甚至執(zhí)行基本編譯時檢查。注解是以‘@注解名’在代碼中存在的
    2022-06-06
  • java創(chuàng)建線程的兩種方法區(qū)別

    java創(chuàng)建線程的兩種方法區(qū)別

    這篇文章主要為大家區(qū)分了java創(chuàng)建線程的兩種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論