Java適配器模式定義與用法示例
本文實(shí)例講述了Java適配器模式定義與用法。分享給大家供大家參考,具體如下:
將一個(gè)類的接口轉(zhuǎn)換成客戶想要的另一個(gè)接口,適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作
適配器一共包括3種角色
1、目標(biāo):目標(biāo)是一個(gè)接口,該接口是客戶想使用的接口
2、被適配者:被適配者是一個(gè)已存在的接口或抽象類,這個(gè)接口或抽象類需要適配
3、適配器:適配器是一個(gè)類,該類實(shí)現(xiàn)了目標(biāo)接口并包含有被適配者的引用,即適配者的指著是對(duì)被適配者接口與目標(biāo)進(jìn)行適配
package org.zhy.adapter;
/**
* 目標(biāo)
* @author zhengyi
*
*/
public interface ThreeElectricOutlet {
//用來(lái)刻畫(huà)三相插座
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 {
//刻畫(huà)兩相插座
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;
/**
* 洗衣機(jī)
* @author zhengyi
*
*/
public class Wash implements ThreeElectricOutlet {
private String name;
public Wash() {
name="洗衣機(jī)";
}
public Wash(String name){
this.name=name;
}
@Override
public void connectElectricCurrent() {
turnOn();
}
private void turnOn(){
System.out.println(name+"開(kāi)始洗衣服");
}
}
package org.zhy.adapter;
/**
* 電視
* @author zhengyi
*
*/
public class Tv implements TwoElectricOutlet {
private String name;
public Tv() {
name="長(zhǎng)江電視機(jī)";
}
public Tv(String s){
this.name=s;
}
@Override
public void connectElectricCurrent() {
turnOn();
}
private void turnOn(){
System.out.println(name+"開(kāi)始播放節(jié)目");
}
}
適配器的適配程度
1、完全適配
如果目標(biāo)接口中的方法數(shù)目與被適配者接口的方法數(shù)目相等那么適配器可將被適配者接口與目標(biāo)接口進(jìn)行完全適配
2、不完全適配
如果目標(biāo)接口中的方法數(shù)目少于被適配者接口的方法數(shù)目那么適配器只能將被適配者接口與目標(biāo)接口進(jìn)行適配
3、剩余適配
如果目標(biāo)接口中的方法數(shù)目大于被適配者接口的方法數(shù)目。那么適配器可將被適配者接口與目標(biāo)接口進(jìn)行完全適配,但必須將目標(biāo)多余的方法給出用戶允許默認(rèn)實(shí)現(xiàn)
適配器模式的優(yōu)點(diǎn)
1、目標(biāo)和適配者是完全解耦的關(guān)系
2、適配器模式滿足“開(kāi)-閉原則”當(dāng)添加一個(gè)實(shí)現(xiàn)Adaptee接口的新類時(shí),不必修改Adaptee,而Adaptee就能對(duì)這個(gè)新類的實(shí)例進(jìn)行適配
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
Springboot+Bootstrap實(shí)現(xiàn)增刪改查實(shí)戰(zhàn)
這篇文章主要介紹了Springboot+Bootstrap實(shí)現(xiàn)增刪改查實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
java導(dǎo)出大批量(百萬(wàn)以上)數(shù)據(jù)的excel文件
這篇文章主要為大家詳細(xì) 介紹了java導(dǎo)出大批量即百萬(wàn)以上數(shù)據(jù)的excel文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
mybatis自動(dòng)填充時(shí)間字段示例代碼
這篇文章主要給大家介紹了關(guān)于mybatis自動(dòng)填充時(shí)間字段的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
Java?ArrayList集合之解鎖數(shù)據(jù)存儲(chǔ)新姿勢(shì)
這篇文章主要介紹了Java?ArrayList集合之解鎖數(shù)據(jù)存儲(chǔ)新姿勢(shì),ArrayList是一個(gè)動(dòng)態(tài)數(shù)組,可以自動(dòng)調(diào)整大小,并提供了豐富的操作方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03
java spring整合junit操作(有詳細(xì)的分析過(guò)程)
這篇文章主要介紹了java spring整合junit操作(有詳細(xì)的分析過(guò)程),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
java實(shí)現(xiàn)簡(jiǎn)單汽車租賃系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單汽車租賃系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01
Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作
這篇文章主要介紹了Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
grade構(gòu)建閱讀spring源碼環(huán)境 Idea2020.3的過(guò)程
這篇文章主要介紹了grade構(gòu)建閱讀spring源碼環(huán)境 Idea2020.3,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
gradle使用maven-publish發(fā)布jar包上傳到私有maven配置
這篇文章主要介紹了gradle使用maven-publish發(fā)布jar包上傳到私有maven的配置示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03

