适配器(Adapter)
生活随笔
收集整理的這篇文章主要介紹了
适配器(Adapter)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
適配器模式說明
適配器模式(Adapter) 通常也被稱為轉換器,當一個對象或類的接口不能匹配用戶所期待的接口時,適配器就充當中間轉換的角色,以達到兼容用戶接口的目的,同時適配器也實現了客戶端與接口的解耦,提高了組件的可復用性
充當一個適配、兼容的工作
例子
兩插腳的電子設備如何使用三孔插座實現通電,開啟電視
● Target(目標接口):客戶端要使用的目標接口標準,對應本章例程中的三相插孔接口TriplePin。
● Adapter(適配器):實現了目標接口,負責適配(轉換)被適配者的接口specificRequest()為目標接口request(),對應本章例程中的電視機專屬適配器類TVAdapter。
● Adaptee(被適配者):被適配者的接口標準,目前不能兼容目標接口的問題接口,可以有多種實現類,對應本章例程中的兩相插孔接口DualPin。
● Client(客戶端):目標接口的使用者。
對象適配器/類適配器
二者的區別在于前者的Adaptee(被適配者)以接口形式出現并被Adapter(適配器)引用,而后者則以父類的角色出現并被Adapter(適配器)繼承,所以前者更加靈活,后者則更為簡便,適配器需要具備適配雙方的基本功能,才能做到兼容,相互對接
類適配器不利于擴展,具體場景下還是具體實用性
實例代碼
package com.azure.design.adapter;/*** 兩孔接口*/ public interface DualPin {// 火、零public void electrify (int l, int n); } package com.azure.design.adapter;/*** 三孔接口*/ public interface TriplePin {// 火、地、零public void electrify (int l, int n, int e); } package com.azure.design.adapter;import com.azure.design.proxy.dymaicproxy.UserService;public class TV implements DualPin {@Overridepublic void electrify(int l, int n) {System.out.print("接通火線:" + l + ",零線:" + n + "!" );System.out.println("電視開了" );} } package com.azure.design.adapter;/****/ public class Adapter implements TriplePin{private DualPin dualPin;// 創建適配器時, 將兩插設備注入public Adapter(DualPin dualPin) {this.dualPin = dualPin;}@Overridepublic void electrify(int l, int n, int e) {// 調用三插接口的方法實際上調的時兩插接口的方法dualPin.electrify(l, n);} } package com.azure.design.adapter;/*** 電視專屬適配器*/ public class TVAdapter extends TV implements TriplePin{@Overridepublic void electrify(int l, int n, int e) {super.electrify(l, n);} } package com.azure.design.adapter;import org.junit.Test;public class Client {/*** 對象適配器*/@Testpublic void tesAdapterDemo() {Adapter adapter = new Adapter(new TV());adapter.electrify(1,0,-1);}/*** 專屬適配器*/@Testpublic void tesTVAdapterDemo() {TVAdapter adapter = new TVAdapter();adapter.electrify(1,0,-1);} }總結
以上是生活随笔為你收集整理的适配器(Adapter)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows系统监控
- 下一篇: Dim Temp%的意思