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表單提交的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03在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),文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下2024-10-10老生常談foreach(增強for循環(huán))和for的區(qū)別
下面小編就為大家?guī)硪黄仙U刦oreach(增強for循環(huán))和for的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09SpringBoot實現(xiàn)多環(huán)境配置文件切換教程詳解
很多時候,我們項目在開發(fā)環(huán)境和生成環(huán)境的環(huán)境配置是不一樣的,例如,數(shù)據(jù)庫配置,這個時候就需要切換環(huán)境配置文件。本文將詳細(xì)講解SpringBoot如何切換配置文件,需要的可以參考一下2022-03-03