0%

Adapter Pattern

Introduction

舉例來說,今天有一家廠商開發數位電視A,並有且對應的API可以讓使用者去操縱

於是就有一家廠商根據這個API開發了對應的遙控器B。

test.png

這時候一切都很正常work,但是不久之後,該廠商又開發了一台更新型的電視C,

這時候提供的API卻跟原來的完全不一樣,這時候原本的遙控器就完全沒有辦法去操控這台新的電視C

這時候解決方法如下

  • 重新製作一個新的遙控器,然後這個新的遙控器可以支援新舊兩款電視。
  • 對新的電視B製造一個轉接器,能夠再新舊API運作,使得舊有的遙控器能夠順利使用。

test.png

如果重新製作一個遙控器,每次有新的API出現,就要重新改寫遙控器,此外在維護上面也複雜。

因此這邊採用轉接器的方式製作。

test.png

再智慧電視B的前面多一層轉接器,這轉接器提供舊有一致的API給搖控器使用,底層使用新的API與電視B溝通,如此一來
遙控器本身依然可以正常運作的去操控新舊兩款電視。

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

//television A

public class TelevisionA implements Television{
public old_control{ .... }
....
}

//television C
public class TelevisionB{
public new_control{ ...}
....
}

//television adapter
public class TVBdapter implements Television{
TelevisionB tb;
public old_control{ tb.new_control() ....}
...
}
//controller
public class controller{
televisionList = {TelevisionA, TVBdapter };
for(Television tv : televisionList){
tv.old_control(...)
}
....
}

個人資訊

我目前於 Hiskio 平台上面有開設 Kubernetes 相關課程,歡迎有興趣的人參考並分享,裡面有我從底層到實戰中對於 Kubernetes 的各種想法

組合包
https://hiskio.com/packages/JPwq4znr1

疑難雜症除錯篇
https://hiskio.com/courses/440/about?promo_code=7EP1KY3

單堂(CI/CD)
https://hiskio.com/courses/385?promo_code=13K49YE&p=blog1

基礎概念
https://hiskio.com/courses/349?promo_code=13LY5RE

另外,歡迎按讚加入我個人的粉絲專頁,裡面會定期分享各式各樣的文章,有的是翻譯文章,也有部分是原創文章,主要會聚焦於 CNCF 領域
https://www.facebook.com/technologynoteniu

如果有使用 Telegram 的也可以訂閱下列頻道來,裡面我會定期推播通知各類文章
https://t.me/technologynote

你的捐款將給予我文章成長的動力

Welcome to my other publishing channels