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

歡迎訪問 生活随笔!

生活随笔

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

java

Java设计模式 - 适配器模式

發布時間:2025/3/21 java 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java设计模式 - 适配器模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

構造器模式

上面的概述可能不是太容易理解,下面舉一個例子說明適配器模式的應用。

大家都知道,新款iPhone 7手機使用了扁口的Lightning接口耳機插槽,而舊款的3.5mm普通耳機是否就不能使用了呢?其實不然,iPhone 7配件中隨機附贈了一個小玩意,可直接將普通3.5mm耳機轉換為iPhone 7可使用的耳機。

而這個小配件就是一個適配器Adapter,iPhone 7就是目標接口Target,而普通的3.5mm耳機就是待適配者Adaptee。

轉接頭 - Adapter3.5mm耳機 - AdapteeiPhone 7 - Target

再如,市面上出售的安卓數據線轉iPhone Lightning接口的轉換器,都可以被認為是一個Adapter,類似例子比比皆是。

其實,適配器模式的核心,就是使得接口完全不相干的兩個類可以協同工作。

1、類的適配器模式
/*** 帶有lightning耳機接口的iPhone7 [Target - 目標接口]*/ public interface IPhone7 {void listenWithLightning(); } /*** 普通3.5mm耳機 [Adaptee - 待適配者]*/ public abstract class Headphone {public abstract void listenWithCommon(); } /*** lightning to 3.5mm耳機 轉換器 [Adapter - 適配器]*/ public class HeadphoneAdapter extends Headphone implements IPhone7 {@Overridepublic void listenWithLightning() {}@Overridepublic void listenWithCommon() {} }

HeadphoneAdapter 通過繼承一個類,然后實現一個新的接口,完成了 Headphone 與 IPhone7的兼容。

像上面這個結構,在Java開發中非常常見,這屬于類的適配器模式

2、對象的適配器模式

還有一種基于對象的適配器模式,即對象的適配器模式

將上面的 HeadphoneAdapter 類做如下修改:

/*** lightning to 3.5mm耳機 轉換器 [Adapter - 適配器]*/ public class HeadphoneAdapter implements IPhone7 {private Headphone headphone;public HeadphoneAdapter(Headphone headphone) {this.headphone = headphone;}@Overridepublic void listenWithLightning() {}public void listenWithCommon() {headphone.listenWithCommon();} }

此時,HeadphoneAdapter 要將 Headphone 適配為 iPhone 7 可識別的耳機,直接持有該類的實例,調用該類的 listenWithCommon() 方法即可。 此為對象的適配器模式

3、接口的適配器模式

適配器模式中的第三種模式也非常常見——接口的適配器模式

當不希望實現一個接口中所有的方法時,可以創建一個抽象類繼承該接口,并實現空方法或默認方法,子類只需繼承該抽象類即可。

/*** 抽象適配器類*/ public abstract class Adapter extends Headphone implements IPhone7 {@Overridepublic void listenWithLightning() {} } /*** 具體適配器類*/ public class HeadphoneAdapter extends Adapter {@Overridepublic void listenWithCommon() {} }

可以看到,HeadphoneAdapter 無需實現 listenWithLightning() 方法,該方法已由父類 Adapter 做了默認空實現。

Android中的適配器模式

public interface ListAdapter extends Adapter {//... } public interface SpinnerAdapter extends Adapter {//... } public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter {//... }

BaseAdapter 既實現了 ListView 的功能,也實現了 Spinner 的功能。



作者:Fynn_
鏈接:https://www.jianshu.com/p/3b1b7812aeea
來源:簡書

總結

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

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