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

歡迎訪問 生活随笔!

生活随笔

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

java

java适配器模式 场景_Java设计模式之《适配器模式》及应用场景

發布時間:2025/3/13 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java适配器模式 场景_Java设计模式之《适配器模式》及应用场景 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

適配器就是一種適配中間件,它存在于不匹配的二者之間,用于連接二者,將不匹配變得匹配,簡單點理解就是平常所見的轉接頭,轉換器之類的存在。

適配器模式有兩種:類適配器、對象適配器、接口適配器

前二者在實現上有些許區別,作用一樣,第三個接口適配器差別較大。

1、類適配器模式:

原理:通過繼承來實現適配器功能。

當我們要訪問的接口A中沒有我們想要的方法 ,卻在另一個接口B中發現了合適的方法,我們又不能改變訪問接口A,在這種情況下,我們可以定義一個適配器p來進行中轉,這個適配器p要實現我們訪問的接口A,這樣我們就能繼續訪問當前接口A中的方法(雖然它目前不是我們的菜),然后再繼承接口B的實現類BB,這樣我們可以在適配器P中訪問接口B的方法了,這時我們在適配器P中的接口A方法中直接引用BB中的合適方法,這樣就完成了一個簡單的類適配器。

詳見下方實例:我們以ps2與usb的轉接為例

ps2接口:Ps2

1 public interface Ps2 {

2 void isPs2();

3 }

USB接口:Usb

1 public interface Usb {

2 void isUsb();

3 }

USB接口實現類:Usber

1 public class Usber implements Usb {

2

3 @Override

4 public void isUsb() {

5 System.out.println("USB口");

6 }

7

8 }

適配器:Adapter

1 public class Adapter extends Usber implements Ps2 {

2

3 @Override

4 public void isPs2() {

5 isUsb();

6 }

7

8 }

測試方法:Clienter

1 public class Clienter {

2

3 public static void main(String[] args) {

4 Ps2 p = new Adapter();

5 p.isPs2();

6 }

7

8 }

顯示結果:

USB口

實例講解:

我手中有個ps2插頭的設備,但是主機上只有usb插頭的插口,怎么辦呢?弄個轉換器,將ps2插頭轉換成為USB插頭就可以使用了。

接口Ps2:描述ps2接口格式

接口Usb:描述USB接口格式

類Usber:是接口Usb的實現類,是具體的USB接口格式

Adapter:用于將ps2接口格式轉換成為USB接口格式

2、對象適配器模式

原理:通過組合來實現適配器功能。

當我們要訪問的接口A中沒有我們想要的方法 ,卻在另一個接口B中發現了合適的方法,我們又不能改變訪問接口A,在這種情況下,我們可以定義一個適配器p來進行中轉,這個適配器p要實現我們訪問的接口A,這樣我們就能繼續訪問當前接口A中的方法(雖然它目前不是我們的菜),然后在適配器P中定義私有變量C(對象)(B接口指向變量名),再定義一個帶參數的構造器用來為對象C賦值,再在A接口的方法實現中使用對象C調用其來源于B接口的方法。

詳見下方實例:我們仍然以ps2與usb的轉接為例

ps2接口:Ps2

1 public interface Ps2 {

2 void isPs2();

3 }

USB接口:Usb

1 public interface Usb {

2 void isUsb();

3 }

USB接口實現類:Usber

1 public class Usber implements Usb {

2

3 @Override

4 public void isUsb() {

5 System.out.println("USB口");

6 }

7

8 }

適配器:Adapter

1 public class Adapter implements Ps2 {

2

3 private Usb usb;

4 public Adapter(Usb usb){

5 this.usb = usb;

6 }

7 @Override

8 public void isPs2() {

9 usb.isUsb();

10 }

11

12 }

測試類:Clienter

1 public class Clienter {

2

3 public static void main(String[] args) {

4 Ps2 p = new Adapter(new Usber());

5 p.isPs2();

6 }

7

8 }

結果顯示:

USB口

實例講解:

我手中有個ps2插頭的設備,但是主機上只有usb插頭的插口,怎么辦呢?弄個轉換器,將ps2插頭轉換成為USB插頭就可以使用了。

接口Ps2:描述ps2接口格式

接口Usb:描述USB接口格式

類Usber:是接口Usb的實現類,是具體的USB接口格式

Adapter:用于將ps2接口格式轉換成為USB接口格式

3、接口適配器模式

原理:通過抽象類來實現適配,這種適配稍別于上面所述的適配。

當存在這樣一個接口,其中定義了N多的方法,而我們現在卻只想使用其中的一個到幾個方法,如果我們直接實現接口,那么我們要對所有的方法進行實現,哪怕我們僅僅是對不需要的方法進行置空(只寫一對大括號,不做具體方法實現)也會導致這個類變得臃腫,調用也不方便,這時我們可以使用一個抽象類作為中間件,即適配器,用這個抽象類實現接口,而在抽象類中所有的方法都進行置空,那么我們在創建抽象類的繼承類,而且重寫我們需要使用的那幾個方法即可。

目標接口:A

1 public interface A {

2 void a();

3 void b();

4 void c();

5 void d();

6 void e();

7 void f();

8 }

適配器:Adapter

1 public abstract class Adapter implements A {

2 public void a(){}

3 public void b(){}

4 public void c(){}

5 public void d(){}

6 public void e(){}

7 public void f(){}

8 }

實現類:Ashili

1 public class Ashili extends Adapter {

2 public void a(){

3 System.out.println("實現A方法被調用");

4 }

5 public void d(){

6 System.out.println("實現d方法被調用");

7 }

8 }

測試類:Clienter

1 public class Clienter {

2

3 public static void main(String[] args) {

4 A a = new Ashili();

5 a.a();

6 a.d();

7 }

8

9 }

4、適配器模式應用場景

類適配器與對象適配器的使用場景一致,僅僅是實現手段稍有區別,二者主要用于如下場景:

(1)想要使用一個已經存在的類,但是它卻不符合現有的接口規范,導致無法直接去訪問,這時創建一個適配器就能間接去訪問這個類中的方法。

(2)我們有一個類,想將其設計為可重用的類(可被多處訪問),我們可以創建適配器來將這個類來適配其他沒有提供合適接口的類。

以上兩個場景其實就是從兩個角度來描述一類問題,那就是要訪問的方法不在合適的接口里,一個從接口出發(被訪問),一個從訪問出發(主動訪問)。

接口適配器使用場景:

(1)想要使用接口中的某個或某些方法,但是接口中有太多方法,我們要使用時必須實現接口并實現其中的所有方法,可以使用抽象類來實現接口,并不對方法進行實現(僅置空),然后我們再繼承這個抽象類來通過重寫想用的方法的方式來實現。這個抽象類就是適配器。

總結

以上是生活随笔為你收集整理的java适配器模式 场景_Java设计模式之《适配器模式》及应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。

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