日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

适配器模式(Adapter Class/Object)

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 适配器模式(Adapter Class/Object) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

適配器模式(Adapter Class/Object)

是指將一個接口轉換成客戶端希望的另外一個接口,該模式使得原本不兼容的類可以一起工作。

舉個例子:macbook pro有一個HDMI接口,一條HDMI接口的數據線,現在要外接顯示器,而顯示器只有VGI接口,我們需要一個HDMI-VGI轉換器,這個轉換器其實起到的作用就是適配器,讓兩個不兼容的接口可以一起工作。

類圖:

適配器有4種角色:

  • 1.目標抽象角色(Target):定義客戶所期待的使用接口。(GVI接口)

  • 2.源角色(Adaptee):需要被適配的接口。(HDMI接口)

  • 3.適配器角色(Adapter):把源接口轉換成符合要求的目標接口的設備。(HDMI-VGI轉換器)

  • 4.客戶端(client):例子中指的VGI接口顯示器。

把HDMI接口轉換成VGI接口,使得macbook pro可以外接顯示器。

//HDMI接口,需要被適配的接口 public interface HDMIPort {void workByHDMI(); } //VGI接口,客戶端所期待的接口 public interface VGIPort {void workByVGI(); } //將HDMI接口轉換為VGI,這就是適配器 public class HDMIToVGI implements VGIPort{HDMIPort hdmiPort;public HDMIToVGI(HDMIPort hdmiPort) {this.hdmiPort = hdmiPort;}//將HDMI接口轉換為VGI接口@Overridepublic void workByVGI() {hdmiPort.workByHDMI();} } public static void main(String[] args) {//定義一個HDMI接口HDMIPort hdmiPort = new HDMIPort() {@Overridepublic void workByHDMI() {//hdmi接口工作方式}};//將HDMI接口轉換為VGI接口VGIPort vgiPort = new HDMIToVGI(hdmiPort);//經過轉換HDMI接口變成了VGI接口vgiPort.workByVGI();}

總結

適配器模式優點:

  • 1.可以讓任何兩個沒有關聯的類一起運行。

  • 2.提高了類的復用。

  • 3.增加了類的透明度。

  • 4.靈活性好。

適配器模式缺點:過多地使用適配器,會讓系統非常零亂,不易整體進行把握。

適用場景:

  • 1.系統需要使用現有的類,而此類的接口不符合系統的需要。

  • 2.想要建立一個可以重復使用的類,用于與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作,這些源類不一定有一致的接口。

  • 3.通過接口轉換,將一個類插入另一個類系中。

Test

package com.qbz.test;//MicroUSB接口,客戶端所期待的接口 interface MicroUSB {void process(); }// USBTypec接口,需要被適配的接口 interface USBTypec {void process(); }class Phone implements MicroUSB {@Overridepublic void process() {System.out.println("使用MicroUSB接口進行充電");} }class Car implements USBTypec {@Overridepublic void process() {System.out.println("使用USBTypec接口進行充電");} }// 適配器,將USBTypec接口轉換成MicroUSB class USBTypecToMicroUSB implements MicroUSB {USBTypec usbTypec;public USBTypecToMicroUSB(USBTypec usbTypec) {this.usbTypec = usbTypec;}@Overridepublic void process() {System.out.println("USBTypec接口轉換成MicroUSB");// 將USBTypec接口轉換成MicroUSB接口usbTypec.process();} }public class Main {public static void main(String[] args) {USBTypec usbTypec = new Car();USBTypecToMicroUSB tTom = new USBTypecToMicroUSB(usbTypec);tTom.process();}}

輸出:

USBTypec接口轉換成MicroUSB 使用USBTypec接口進行充電

總結

以上是生活随笔為你收集整理的适配器模式(Adapter Class/Object)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。