设计模式——桥接模式

2020-10-29  本文已影响0人  DevilRoshan

什么是桥接模式?

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

实现

// 手机软件接口
type HandsetSoft interface {
    Run()
}

// 手机品牌
type HandsetBrand struct {
    Soft HandsetSoft
}

func NewHandsetBrand() *HandsetBrand  {
    return &HandsetBrand{}
}

func (this *HandsetBrand)SetHandsetSoft(soft HandsetSoft)  {
    this.Soft = soft
}

func (this *HandsetBrand) Run() {
    this.Soft.Run()
}

// 手机游戏
type HandsetGame struct {
    
}

func NewHandsetGame() *HandsetGame  {
    return &HandsetGame{}
}
// 手机游戏实现手机软件接口
func (this *HandsetGame) Run() {
    fmt.Println("运行手机游戏")
}

// 手机地址簿
type HandsetAddressList struct {

}

func NewHandsetAddressList() *HandsetAddressList  {
    return &HandsetAddressList{}
}
// 手机地址簿实现手机软件接口
func (this *HandsetAddressList) Run() {
    fmt.Println("运行手机地址簿")
}
func TestNewHandsetBrand(t *testing.T) {
    brandA := NewHandsetBrand()
    fmt.Println("手机品牌A")
    brandA.SetHandsetSoft(NewHandsetGame())
    brandA.Run()
    brandA.SetHandsetSoft(NewHandsetAddressList())
    brandA.Run()
}
// === RUN   TestNewHandsetBrand
// 手机品牌A
// 运行手机游戏
// 运行手机地址簿
// --- PASS: TestNewHandsetBrand (0.00s)
// PASS

优点:

缺点:

适用场景

注意

上一篇 下一篇

猜你喜欢

热点阅读