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

Java適配器模式定義與用法示例

 更新時間:2017年06月07日 08:27:35   作者:qq7342272  
這篇文章主要介紹了Java適配器模式定義與用法,結(jié)合具體實例形式分析了java適配器模式的功能、組成、定義、使用方法及適配程度等,需要的朋友可以參考下

本文實例講述了Java適配器模式定義與用法。分享給大家供大家參考,具體如下:

將一個類的接口轉(zhuǎn)換成客戶想要的另一個接口,適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作

適配器一共包括3種角色

1、目標(biāo):目標(biāo)是一個接口,該接口是客戶想使用的接口

2、被適配者:被適配者是一個已存在的接口或抽象類,這個接口或抽象類需要適配

3、適配器:適配器是一個類,該類實現(xiàn)了目標(biāo)接口并包含有被適配者的引用,即適配者的指著是對被適配者接口與目標(biāo)進行適配

package org.zhy.adapter;
/**
 * 目標(biāo)
 * @author zhengyi
 *
 */
public interface ThreeElectricOutlet {
  //用來刻畫三相插座
  public abstract void connectElectricCurrent();
}

package org.zhy.adapter;
/**
 * 適配器
 * @author zhengyi
 *
 */
public class TreeElecricAdapter implements ThreeElectricOutlet {
  TwoElectricOutlet outlet;
  public TreeElecricAdapter(TwoElectricOutlet teo) {
    this.outlet=teo;
  }
  @Override
  public void connectElectricCurrent() {
    outlet.connectElectricCurrent();
  }
}

package org.zhy.adapter;
/**
 * 被適配者
 * @author zhengyi
 *
 */
public interface TwoElectricOutlet {
  //刻畫兩相插座
  public abstract void connectElectricCurrent();
}

package org.zhy.adapter;
public class Appliction {
  public static void main(String[] args) {
    ThreeElectricOutlet outlet; //目標(biāo)接口三相插座
    Wash wash=new Wash();
    outlet=wash;
    System.out.println("使用三相插座接通電流");
    outlet.connectElectricCurrent();
    Tv tv=new Tv();
    TreeElecricAdapter adapter=new TreeElecricAdapter(tv);
    outlet= adapter;
    System.out.println("使用三相插座接通電流");
    outlet.connectElectricCurrent();
  }
}

package org.zhy.adapter;
/**
 * 洗衣機
 * @author zhengyi
 *
 */
public class Wash implements ThreeElectricOutlet {
  private String name;
  public Wash() {
    name="洗衣機";
  }
  public Wash(String name){
    this.name=name;
  }
  @Override
  public void connectElectricCurrent() {
    turnOn();
  }
  private void turnOn(){
    System.out.println(name+"開始洗衣服");
  }
}

package org.zhy.adapter;
/**
 * 電視
 * @author zhengyi
 *
 */
public class Tv implements TwoElectricOutlet {
  private String name;
  public Tv() {
    name="長江電視機";
  }
  public Tv(String s){
    this.name=s;
  }
  @Override
  public void connectElectricCurrent() {
    turnOn();
  }
  private void turnOn(){
    System.out.println(name+"開始播放節(jié)目");
  }
}

適配器的適配程度

1、完全適配

如果目標(biāo)接口中的方法數(shù)目與被適配者接口的方法數(shù)目相等那么適配器可將被適配者接口與目標(biāo)接口進行完全適配

2、不完全適配

如果目標(biāo)接口中的方法數(shù)目少于被適配者接口的方法數(shù)目那么適配器只能將被適配者接口與目標(biāo)接口進行適配

3、剩余適配

如果目標(biāo)接口中的方法數(shù)目大于被適配者接口的方法數(shù)目。那么適配器可將被適配者接口與目標(biāo)接口進行完全適配,但必須將目標(biāo)多余的方法給出用戶允許默認(rèn)實現(xiàn)

適配器模式的優(yōu)點

1、目標(biāo)和適配者是完全解耦的關(guān)系

2、適配器模式滿足“開-閉原則”當(dāng)添加一個實現(xiàn)Adaptee接口的新類時,不必修改Adaptee,而Adaptee就能對這個新類的實例進行適配

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

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

相關(guān)文章

  • Spring Cloud使用Feign實現(xiàn)Form表單提交的示例

    Spring Cloud使用Feign實現(xiàn)Form表單提交的示例

    本篇文章主要介紹了Spring Cloud使用Feign實現(xiàn)Form表單提交的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 在IDEA中安裝scala、maven、hadoop遇到的問題小結(jié)

    在IDEA中安裝scala、maven、hadoop遇到的問題小結(jié)

    這篇文章主要介紹了在IDEA中安裝scala、maven、hadoop遇到的問題小結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 新版IDEA使用Spring Initializr創(chuàng)建工程的兩種方法

    新版IDEA使用Spring Initializr創(chuàng)建工程的兩種方法

    這篇文章主要介紹了新版IDEA使用Spring Initializr創(chuàng)建工程(兩種方法,官方工具和IDEA),文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-10-10
  • MyBatis在mapper中傳遞參數(shù)的四種方式

    MyBatis在mapper中傳遞參數(shù)的四種方式

    MyBatis是一個持久層框架,它提供了一種將數(shù)據(jù)庫操作與Java對象之間的映射關(guān)系進行配置的方式,在MyBatis中,Mapper是用于定義數(shù)據(jù)庫操作的接口,而參數(shù)傳遞則是通過Mapper接口的方法來實現(xiàn)的,本文給大家介紹了MyBatis在mapper中傳遞參數(shù)的四種方式,需要的朋友可以參考下
    2024-03-03
  • Java?Object類equals方法

    Java?Object類equals方法

    這篇文章主要介紹了Java?Object類equals方法,Object類位于java.lang包中,java.lang包包含著Java最基礎(chǔ)和核心的類,在編譯時會自動導(dǎo)入,下文更多相關(guān)介紹,需要的小伙伴可以參考一下
    2022-04-04
  • 解決fastjson泛型轉(zhuǎn)換報錯的解決方法

    解決fastjson泛型轉(zhuǎn)換報錯的解決方法

    這篇文章主要介紹了解決fastjson泛型轉(zhuǎn)換報錯的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 老生常談foreach(增強for循環(huán))和for的區(qū)別

    老生常談foreach(增強for循環(huán))和for的區(qū)別

    下面小編就為大家?guī)硪黄仙U刦oreach(增強for循環(huán))和for的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • JAVA提高第九篇 集合體系

    JAVA提高第九篇 集合體系

    這篇文章主要為大家詳細(xì)介紹了JAVA提高第九篇集合體系的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • SpringBoot實現(xiàn)多環(huán)境配置文件切換教程詳解

    SpringBoot實現(xiàn)多環(huán)境配置文件切換教程詳解

    很多時候,我們項目在開發(fā)環(huán)境和生成環(huán)境的環(huán)境配置是不一樣的,例如,數(shù)據(jù)庫配置,這個時候就需要切換環(huán)境配置文件。本文將詳細(xì)講解SpringBoot如何切換配置文件,需要的可以參考一下
    2022-03-03
  • Spring中的@Async原理分析

    Spring中的@Async原理分析

    這篇文章主要介紹了Spring中的@Async原理分析,自定義new ThreadPoolExecutor并調(diào)用invokeAll等進行并發(fā)編程,后面發(fā)現(xiàn)只要在方法上添加@Async注解,并使用@EnableAsync進行開啟默認(rèn)會使用SimpleAsyncTaskExecutor類型,需要的朋友可以參考下
    2024-01-01

最新評論