設計模式 介面卡模式 Go語言描寫敘述

2021-09-07 13:19:00 字數 2602 閱讀 4015

說起介面卡模式,相信非常多做android的同學第一印象就是adapterview的adapter,那它是幹嘛用的呢?為什麼要叫adapter呢?要了解這個問題。我們首先來看看介面卡模式的定義:

將乙個類的介面轉換成客戶希望的另外乙個介面。介面卡模式使得原本由於介面不相容而不能一起工作的那些類能夠一起工作。——gang of four

恩,看起來好像有點迷糊,舉個樣例吧:

我電腦的電源是三個插頭(也就是有地線)的那種,不知道為啥學校的插座都是兩個插孔的,哎呀,這可咋辦啊!同學建議我們買個轉換器,這種轉換器有三個插孔,我的電源能夠插進去,同一時候它還有兩個插頭,能夠插進學校的插座裡,嘿嘿,同學真聰明,這麼easy的就攻克了我的問題。

在上面的樣例裡,那個轉換器也能夠叫做介面卡,我們如今要說的介面卡模式靈感就是來自上述所述的實際生活中遇到的問題。那在我們程式設計中會遇到什麼樣的問題呢? 再來看個樣例:

」聽了同學的話。我突然恍然大悟。原來這就是介面卡模式!

好了。通過上面的三個小段子,相信大家對介面卡模式應該了有了大概的認識,以下還是用一張結構圖來清晰的描寫敘述一下什麼是介面卡模式吧。

通過上面的圖我們也能夠看出來,介面卡要做的事情就是讓我們寫的野實現適配到系統須要的標準實現上。以下我們迅速進去**模式,讓**告訴我們介面卡模式張啥樣!

package player

type player inte***ce

package player

import

"fmt"

type musicplayer struct

func (p musicplayer) playmusic()

package main

import . "./player"

func main()

play(player)

}func play(player player)

**也超級簡單,乙個play方法去呼叫了player的實現的playmusic方法。

來看看結果,

gamesoundplayer也是有乙個src屬性,也有乙個方法,只是這種方法叫playsound。並非我們須要的playmusic,那可咋辦呢?別忘了咱們的play方法

須要的是乙個player的實現,並自己主動呼叫了playmusic方法,以下本節的主角-gamesoundadapter出場。

package player

type gamesoundadapter struct

func (p gamesoundadapter) playmusic()

來看看我們這個介面卡適配的咋樣,

package main

import . "./player"

func main()

gameadapter := gamesoundadapter

play(gameadapter)

}func play(player player)

看main函式中,首先我們還是有乙個gamesoundplayer型別的變數,然後將它賦值給了gamesoundadaptersoundplayer屬性。以下呼叫gamesoundadapterplaymusic方法,就能夠間接的呼叫gamesoundplayerplaysound方法了,這樣我們就輕鬆的將gamesoundplayer適配到了player

來看看結果:

總體來看我們的**還是非常easy,只是簡單的**已經將介面卡模式解說的非常清晰了,那最後我們來思考乙個問題,介面卡模式體現了哪些物件導向的設計原則呢?針對介面程式設計有木有?開閉原則有木有?

設計模式 介面卡模式 Go語言描述

說起介面卡模式,相信很多做android的同學第一印象就是adapterview的adapter,那它是幹嘛用的呢?為什麼要叫adapter呢?要了解這個問題,我們首先來看看介面卡模式的定義 將乙個類的介面轉換成客戶希望的另外乙個介面。介面卡模式使得原本由於介面不相容而不能一起工作的那些類可以一起工...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...

設計模式之介面卡模式(類介面卡模式)

介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...