介面卡模式包含如下角色:物件介面卡:target:目標抽象類
adapter:介面卡類
adaptee:適配者類
client:客戶類
類介面卡:
在以下情況下可以使用介面卡模式:系統需要使用現有的類,而這些類的介面不符合系統的需要。
想要建立乙個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。
package main
import
("fmt"
"log"
)//物件介面卡
type kafka struct
func
(k *kafka)
sendmsg()
type etcd struct
func
(k *etcd)
sendmsg()
type sendmsg inte***ce
type adapter struct
func
(a *adapter)
sendmsg()
error
return
nil}
func
fsendmsg
(msgtype int
)error
, etcd: etcd,}
return adapter.
sendmsg()
}func
main()
err =
fsendmsg(2
)if err !=
nil}
package main
import
("fmt"
"log"
)type sendmsgtokafka inte***ce
type sendmsgtoetcd inte***ce
//類介面卡
type kafka struct
func
(k *kafka)
sendmsgtokafka()
type etcd struct
func
(k *etcd)
sendmsgtoetcd()
// 客戶端想要的介面
type sendmsg inte***ce
type adapter struct
func
(a *adapter)
sendmsg()
error
return
nil}
func
fsendmsg
(msgtype int
)error
return adapter.
sendmsg()
}func
main()
err =
fsendmsg(2
)if err !=
nil}
設計模式golang 介面卡模式
將乙個介面轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。1.源介面。2.適配目的介面。3.適配結構體。人類能說話,動物也能發聲叫,人類能學動物叫,需要乙個轉換器把人類的叫聲轉換為動物的叫聲。適配目的介面 type animalsound inte ce 源結構體 type pe...
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...