真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

設(shè)計模式之適配器模式-創(chuàng)新互聯(lián)

設(shè)計模式之適配器模式 概述

適配器模式: 將一個接口轉(zhuǎn)換成客戶希望的另一個接口,使接口不兼容的那些類可以一起工作,其別名為包裝類(Wrapper),適配器模式既可以作為類結(jié)構(gòu)型模式,也可以作為對象結(jié)構(gòu)型模式

創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站設(shè)計、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元仁壽做網(wǎng)站,已為上家服務(wù),為仁壽各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
  • 在適配器模式定義中所提及的接口是指廣義的接口,它可以表示一個方法或者方法的集合

類似封裝(設(shè)計模式使用了大量的繼承、封裝、閉包、高階函數(shù)等方法)

在適配器模式中,通過增加一個新的適配器類來解決接口不兼容的問題,使得沒有任何關(guān)系的類可以協(xié)同工作。根據(jù)適配器類與適配者類的關(guān)系不同,適配器模式可分為對象適配器模式和類適配器模式兩種。在對象適配器模式中,適配器與適配者之間是關(guān)聯(lián)關(guān)系;在類適配器模式中,適配器與適配者之間是繼承(或?qū)崿F(xiàn))關(guān)系

對象適配器模式包含3個角色

  • Target(目標(biāo)抽象類): 目標(biāo)抽象類定義客戶所需接口,可以是一個抽象類或接口,也可以是具體類
  • Adapter(適配器類): 適配器可以調(diào)用另一個接口,作為一個轉(zhuǎn)換器,對Adaptee和Target進(jìn)行適配。適配器類是適配器模式的核心,在對象適配器模式中,他通過繼承Target并關(guān)聯(lián)一個Adaptee對象使二者產(chǎn)生聯(lián)系
  • Adaptee(適配者類):適配者即被適配的對象,它定義了一個已經(jīng)存在的接口,這個接口需要適配,適配者類一般是一個具體的類,包含了客戶希望使用的業(yè)務(wù)方法,在某些情況下可能沒有適配者類的源代碼
TypeC轉(zhuǎn)USB充電接口

假設(shè)我們現(xiàn)在只有type-C的充電口,但是我們需要給只接受USB充電口的設(shè)備充電,這個時候我們就需要一個充電適配器來進(jìn)行充電接口的轉(zhuǎn)換

package adapter

import "fmt"

// USBTarget 目標(biāo)接口
type USBTarget interface {USBCharge()
}

// Adapter 適配器
type Adapter struct {Adaptee TypeCAdaptee
}

func NewAdapter(adaptee TypeCAdaptee) *Adapter {return &Adapter{Adaptee: adaptee,
	}
}

func (a *Adapter) USBCharge() {fmt.Println("充電接口轉(zhuǎn)換->USB")
	a.Adaptee.TypeCCharge()
}

// TypeCAdaptee 適配者
type TypeCAdaptee struct {}

func (t *TypeCAdaptee) TypeCCharge() {fmt.Println("開始充電")
}

這里我們定義了一個目標(biāo)接口

// USBTarget 目標(biāo)接口
type USBTarget interface {USBCharge()
}

還有一個Type-C的充電接口,這個Type-C接口是沒辦法進(jìn)行USB充電的

// TypeCAdaptee 被適配者
type TypeCAdaptee struct {}
func (t *TypeCAdaptee) TypeCCharge() {fmt.Println("開始充電")
}

如果我們手里只有Type-C的接口,是沒辦法使用USB的充電的,所以這里還需要有一個充電適配器

// Adapter 適配器
type Adapter struct {Adaptee TypeCAdaptee
}

func NewAdapter(adaptee TypeCAdaptee) *Adapter {return &Adapter{  Adaptee: adaptee,
   }
}

func (a *Adapter) USBCharge() {fmt.Println("充電接口轉(zhuǎn)換->USB")
   a.Adaptee.TypeCCharge()
}

這個充電適配器實現(xiàn)了USB充電的方法,在內(nèi)部將充電的方法進(jìn)行了轉(zhuǎn)換,最后完成了USB的充電

測試
package adapter

import "testing"

func TestAdapter_ChargeAdapter(t *testing.T) {typeCAdaptee := TypeCAdaptee{}
   adapter := NewAdapter(typeCAdaptee)
   adapter.USBCharge()
}
//
// === RUN   TestAdapter_ChargeAdapter
// 充電接口轉(zhuǎn)換,USB
// 充電
// --- PASS: TestAdapter_ChargeAdapter (0.00s)
// PASS
總結(jié) 優(yōu)點
  1. 將目標(biāo)類和適配者類接口,通過引入一個適配器類來重用現(xiàn)有的適配者類,無須修改原有的結(jié)構(gòu)
  2. 增加了類的透明性和復(fù)用性,將具體的業(yè)務(wù)實現(xiàn)過程封裝在適配器中

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


文章名稱:設(shè)計模式之適配器模式-創(chuàng)新互聯(lián)
本文鏈接:http://weahome.cn/article/hcssh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部