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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

adapter pattern java_适配器模式(Adapter Pattern)

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

適配器模式(Adapter Pattern) 是作為兩個不兼容的接口之間的橋梁。

例子:讀卡器是作為內存卡和筆記本之間的是適配器,內存卡插入讀卡器,讀卡器再插入筆記本電腦。

參考資料:?、

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

何時使用:1.要使用已有的一個類的方法,但是不符合我們的使用規范,且我們不知道其源碼,無法copy。2。建立一個重復使用的類,用于聯系一些彼此之間沒有太大聯系的類。3.通過接口的轉換,將一個類插入到另一個類中。

如何實現:繼承或者依賴。適配器繼承或者依賴已有的代碼,實現目標類的接口。

注意事項:適配器不是在詳細設計時添加的,而是解決正在服役的項目的問題。

適配器有兩種模式:這兩種的差別在于一個是繼承源角色類,一個是獲取源角色類的對象。

類適配器模式:(繼承源角色)

對象適配器模式:(獲取源角色對象)

差別:1.類適配器的話,因為是繼承了源角色類的關系,所以不能去處理源角色類的子類。而對象適配器則沒有關系,一個適配器可以將其源類和其子類都適配到目標接口。

2.類適配器可以重新定義源角色類的方法,通過重寫方法即可。而對象適配器的話只能通過適配器子類的方法來達到重寫源角色類的方法 。

代碼實現:類適配器模式

1 /**

2 * 目標角色

3 */

4 public interface Target {

5 //已有的方法

6 void sampleOp1();

7 //沒有但是想要實現的方法

8 void sampleOp2();

9 }

1 /**

2 * 源角色

3 */

4 public class Adaptee {

5

6 public void sampleOp1(){

7 System.out.println("sampleOp1...");

8 }

9 }

1 /**

2 * 適配器角色

3 */

4 public class Adapter extends Adaptee implements Target {

5

6 @Override

7 public void sampleOp2() {

8 System.out.println("sampleOp2....");

9 }

10 }

//測試

@Test

public void test()throws Exception{

Target target = new Adapter();

target.sampleOp1();

target.sampleOp2();

}

/*

*輸出

*sampleOp1...

*sampleOp2....

*/

代碼實現:對象適配器模式

1 /**

2 * 目標角色

3 */

4 public interface Target {

5 //已有的方法

6 void sampleOp1();

7 //沒有但是想要實現的方法

8 void sampleOp2();

9 }

10

11

12 /**

13 * 源角色

14 */

15 public class Adaptee {

16 public void sampleOp1(){

17 System.out.println("sampleOp1...");

18 }

19 }

20

21

22 /**

23 * 適配器角色

24 */

25 public class Adapter implements Target{

26 private Adaptee adaptee;

27

28 public Adapter(Adaptee adaptee) {

29 this.adaptee = adaptee;

30 }

31

32 @Override

33 public void sampleOp1() {

34 this.adaptee.sampleOp1();

35 }

36

37 @Override

38 public void sampleOp2() {

39 System.out.println("sampleOp2....");

40 }

41 }

//測試

@RunWith(SpringRunner.class)

@SpringBootTest

public class AdapterTest {

@Test

public void test()throws Exception{

Target adapter = new Adapter(new Adaptee());

adapter.sampleOp1();

adapter.sampleOp2();

}

}

/*

*sampleOp1...

*sampleOp2....

*/

除此之外,適配器模式還有一種應用。缺省模式

應用場景:我們要實現一個接口,但是在該接口的大量方法內部,我們只想要其中的少數一兩個。

在接口的實現中,必須要將其所有的方法進行重寫。所以會在代碼內有大量的空缺省的方法,造成類的臃腫。

適配器的缺省模式:一個抽象的適配器角色實現該接口。

目標角色繼承該抽象類。只需要實現自己想要的方法即可。

代碼實現:

1 /**

2 * 一個和尚應該要做的事情

3 */

4 public interface Bonze {

5 void chiZhai();

6 void nianFo();

7 void daZuo();

8 void saoDi();

9 void xiWu();

10 void zhuangZhong();

11 String getName();

12 }

13

14

15

16 /**

17 * 適配器

18 */

19 public abstract class TianStar implements Bonze {

20 @Override

21 public void chiZhai() {

22

23 }

24

25 @Override

26 public void nianFo() {

27

28 }

29

30 @Override

31 public void daZuo() {

32

33 }

34

35 @Override

36 public void saoDi() {

37

38 }

39

40 @Override

41 public void xiWu() {

42

43 }

44

45 @Override

46 public void zhuangZhong() {

47

48 }

49

50 @Override

51 public String getName() {

52 return null;

53 }

54 }

55

56

57

58 /**

59 * 目標角色

60 */

61 public class LuZhiShen extends TianStar {

62 @Override

63 public void xiWu() {

64 System.out.println("" +

65 " 拳打鎮關西;\n" +

66 " 大鬧五臺山;\n" +

67 " 大鬧桃花村;\n" +

68 " 火燒瓦官寺;\n" +

69 " 倒拔垂楊柳;");

70 }

71

72 @Override

73 public String getName() {

74 return "魯智深在此";

75 }

76 }

77

78

79 @RunWith(SpringRunner.class)

80 @SpringBootTest

81 public class LuZhiShenTest {

82

83 @Test

84 public void test()throws Exception{

85 Bonze bonze = new LuZhiShen();

86 bonze.xiWu();

87 System.out.println(bonze.getName());

88 }

89 }

90

91 /*

92 * 拳打鎮關西;

93 * 大鬧五臺山;

94 * 大鬧桃花村;

95 * 火燒瓦官寺;

96 * 倒拔垂楊柳;

97 *魯智深在此

98 */

希望與廣大網友互動??

點此進行留言吧!

總結

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

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