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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式-适配器模式(类适配器、对象适配器、接口适配器详解)

發布時間:2023/12/18 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式-适配器模式(类适配器、对象适配器、接口适配器详解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 適配器模式
  • 類適配器
  • 對象適配器
  • 接口適配器
  • 總結


適配器模式


適配器模式(Adapter Pattern)將某個類的接口轉換成客戶端期望的另一個接口表示,主的目的是兼容性,讓原本因接口不匹配不能一起工作的兩個類可以協同工作。也稱包裝器(Wrapper),屬于結構型模式。適配器模式主要分為三類:類適配器模式、對象適配器模式、接口適配器模式

工作原理
將一個類的接口轉換成另一種接口,讓原本接口不兼容的類可以兼容。從用戶的角度看不到被適配者,是解耦的/。用戶調用適配器轉化出來的目標接口方法,適配器再調用被適配者的相關接口方法,用戶收到反饋結果,感覺只是和目標接口交互。

簡單來說,適配器模式就像個插頭轉換器,讓不同標準的插頭和插座可以一起使用,而插座就是原來的接口,插頭是用戶期望的接口。或者類比電源適配器,把原來的220V電壓轉換成5V電壓等。

類適配器


顧名思義,通過適配器通過類來實現,以類來繼承和實現接口的方式,來獲取被適配類的信息并轉換輸出重寫到適配接口。即Adapter類,通過繼承src類,實現dst類接口,完成src->dst的適配。

//被適配的類 public class Voltage220V {public int output220V() {int src = 220;System.out.println("電壓=" + src);return src;} }//適配接口 public interface IVoltage5V {public int output5V(); }//適配器類 public class VoltageAdapter extends Voltage220V implements IVoltage5V {@Overridepublic int output5V() {// TODO Auto-generated method stub//獲取220V電壓int srcV = output220V();int dstV = srcV / 44 ; //轉成5vreturn dstV;} }//調用 public class Phone {public void charging(IVoltage5V iVoltage5V) {if(iVoltage5V.output5V() == 5) {System.out.println("電壓是5v,可以充電"); } else if (iVoltage5V.output5V() > 5) {System.out.println("電壓大于5v,不可充電");}} }//測試 public class Client {public static void main(String[] args) {System.out.println("===類適配器測試===");Phone phone = new Phone();phone.charging(new VoltageAdapter());} }

優缺點:

  • 有一定局限性。因為類適配器需要繼承src類,而Java是單繼承機制,所以要求dst必須是接口。
  • src類的方法在Adapter中都會暴露出來,耦合性高。
  • 可以根據需求重寫src類的方法,使得Adapter的靈活性增強了。
  • 對象適配器


    顧名思義,通過實例對象(構造器傳遞)來實現適配器,而不是再用繼承,其余基本同類適配器。即:持有src類,實現dst類接口,完成src->dst的適配。

    (插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

    //被適配的類(不變) public class Voltage220V {public int output220V() {int src = 220;System.out.println("電壓=" + src);return src;} }//適配接口(不變) public interface IVoltage5V {public int output5V(); }//適配器類 public class VoltageAdapter implements IVoltage5V {private Voltage220V voltage220V;//構造器public VoltageAdapter(Voltage220V voltage220v) {this.voltage220V = voltage220v;}@Overridepublic int output5V() {int dst = 0;if(null != voltage220V) {int src = voltage220V.output220V();//獲取220v電壓dst = src / 44;}return dst;} }//調用(不變) public class Phone {public void charging(IVoltage5V iVoltage5V) {if(iVoltage5V.output5V() == 5) {System.out.println("電壓是5v,可以充電"); } else if (iVoltage5V.output5V() > 5) {System.out.println("電壓大于5v,不可充電");}} }//測試 public class Client {public static void main(String[] args) {System.out.println("===對象適配器===");Phone phone = new Phone();VoltageAdapter VoltageAdapter = new VoltageAdapter(new Voltage220V());phone.charging(VoltageAdapter);} }

    優缺點:

  • 把繼承解耦,解決了類適配器必須繼承src的局限性問題,也不再要求dst必須是接口。
  • 成本低更靈活。
  • 接口適配器


    繼承那邊可以解耦了,那能不能從接口這邊解耦?

    接口適配器也稱缺省適配器模式,適用于一個接口不想使用其所有的方法的情況。當不需要全部實現接口提供的方法時,可先設計一個抽象類實現接口,并為該接口中每個方法提供一個默認實現(空方法),那么該抽象類的子類可有選擇地覆蓋父類的某些方法來實現需求。

    //被適配的類(不變) public class Voltage220V {public int output220V() {int src = 220;System.out.println("電壓=" + src);return src;} }//適配接口 public interface IVoltage5V {public int output5V();public void m2(); //接口里冗余不重要的方法public String m3(); } //抽象適配器 public abstract class AbsAdapter extends Voltage220V implements IVoltage5V{@Override //以空方法實現接口所有方法public int output5V() {return 0;}@Overridepublic void m2() {}@Overridepublic String m3() {return null;} }//調用(不變) public class Phone {public void charging(IVoltage5V iVoltage5V) {if(iVoltage5V.output5V() == 5) {System.out.println("電壓是5v,可以充電");} else if (iVoltage5V.output5V() > 5) {System.out.println("電壓大于5v,不可充電");}} }//測試 public class Client {public static void main(String[] args) {System.out.println("===接口適配器===");AbsAdapter absAdapter = new AbsAdapter() { //匿名內部類的形式@Override //按需要重寫接口方法public int output5V() {System.out.println("使用了output5V的方法");int srcV = output220V();int dstV = srcV / 44 ; //轉成5vreturn dstV;}};Phone phone = new Phone();phone.charging(absAdapter);} }


    優缺點:

  • 可以靈活方便的選擇性重寫接口方法。
  • 由于是匿名內部類的形式,所以不利于代碼復用。
  • 總結


    以上三種形式是根據src是以怎樣的形式給到Adapter來命名的:

  • 類適配器:以類給到,在Adapter里,就是將src當做類,繼承
  • 對象適配器:以對象給到,在Adapter里,將src作為一個對象,持有
  • 接口適配器:以接口給到,在Adapter里,將src作為一個接口,實現
  • Adapter模式最大的作用還是將原本不兼容的接口融合在一起工作,在實際開發中,實現起來不拘泥于我們講解的三種經典形式。

    原創不易,請勿轉載(本不富裕的訪問量雪上加霜 )
    博主首頁:https://wzlodq.blog.csdn.net/
    微信公眾號:吾仄lo咚鏘
    如果文章對你有幫助,記得一鍵三連?

    總結

    以上是生活随笔為你收集整理的设计模式-适配器模式(类适配器、对象适配器、接口适配器详解)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 污污网站免费 | 精品视频日韩 | 黄色av网站在线 | 丝袜理论片在线观看 | av在线综合网 | 中文字字幕一区二区三区四区五区 | 国产欧美亚洲一区二区 | 欧美 亚洲 另类 偷偷 自拍 | 麻豆精品视频免费观看 | 激情视频网站在线观看 | 国产在线拍揄自揄拍无码视频 | 欧美一级视频在线观看 | 日本少妇喷水 | 久草精品在线观看视频 | 欧美日韩少妇精品 | 成人免费视频久久 | 精品无码久久久久国产 | 亚洲综合在线观看视频 | 91麻豆网 | 欧美一及片| 亚洲手机看片 | 深夜福利视频在线观看 | 大咪咪dvd | xxxx毛片| 天天爽| 国产av一区二区三区精品 | 奶水旺盛的少妇在线播放 | 免费在线看黄网站 | 28一20岁女人一级 | 日本黄在线| 欧美1区2区3区 | 久久精品伦理 | 999免费视频| 一级二级三级视频 | 精品人妻无码专区在线 | 超碰凹凸| 永久免费视频网站直接看 | 欧洲性猛交 | 国产精品网站在线 | 欧亚一区二区三区 | 国产亚洲视频一区 | 献给魔王伊伏洛基亚吧动漫在线观看 | 亚洲视频免费在线 | 久久艹精品 | 亚洲区自拍偷拍 | 国产精品成人免费一区久久羞羞 | 亚洲影音 | 国产精品久久九九 | 亚洲清纯唯美 | 免费a级网站 | 91成人免费看片 | 国产激情无码一区二区三区 | 国产破处视频 | 欧美 日韩 国产 激情 | 免费成人在线网站 | 亚洲黄色av | 秋霞毛片少妇激情免费 | 欧洲做受高潮欧美裸体艺术 | 国产夜夜夜 | 精品视频www| 日韩人成| 精品国产18久久久久久二百 | 操操综合网 | 亚洲玖玖爱 | 久久94| 久久高清无码电影 | 真人bbbbbbbbb毛片 | 999色综合 | 色久月| 国产一级黄色录像 | 99久久久无码国产精品6 | yy4138理论片动漫理论片 | 超碰.com | 日韩色视频在线观看 | 秋霞毛片少妇激情免费 | 波多野结衣一区二区三区免费视频 | 俄罗斯厕所偷拍 | 亚洲图片欧美在线看 | 99久久久无码国产精品免费麻豆 | 麻豆视频网页 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 加勒比av在线播放 | 久久精品三级 | 尤果网福利视频在线观看 | 久久人人爽天天玩人人妻精品 | 超碰久草| 91精品啪在线观看国产 | 依依成人综合网 | 国产另类av| 五月丁香综合激情六月久久 | 久久这里只有精品6 | 亚洲a精品| 欧美三日本三级少妇99 | 人成午夜 | 午夜伊人网 | 色婷婷18 | 精品一区二区在线观看视频 | 97香蕉久久超级碰碰高清版 | 人妻少妇精品无码专区二区 |