适配器模式(Adapter Class/Object)
生活随笔
收集整理的這篇文章主要介紹了
适配器模式(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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12306登录分析
- 下一篇: appcan ajax mysql_AP