概念
桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
需求
利用桥接模式实现不同品牌的手机安装不同的软件
UML图
代码
手机品牌接口和具体实现类
package bridgePattern
type HandsetBrand interface {
Run()
SetHandSoft(soft HandsetSoft)
}
type HandsetBrandN struct {
soft HandsetSoft
}
func (h *HandsetBrandN) Run() {
h.soft.run()
}
func (h *HandsetBrandN) SetHandSoft(soft HandsetSoft) {
h.soft = soft
}
type HandsetBrandM struct {
soft HandsetSoft
}
func (h *HandsetBrandM) Run() {
h.soft.run()
}
func (h *HandsetBrandM) SetHandSoft(soft HandsetSoft) {
h.soft = soft
}
手机软件抽象类和具体实现类
package bridgePattern
import "fmt"
type HandsetSoft interface {
run()
}
type HandsetGame struct {
}
func (h *HandsetGame) run() {
fmt.Println("运行手机游戏")
}
type HandsetAddressList struct {
}
func (h *HandsetAddressList) run() {
fmt.Println("运行手机通讯录")
}
测试
//桥接模式
var ab bridgePattern.HandsetBrand
ab = &bridgePattern.HandsetBrandN{}
ab.SetHandSoft(&bridgePattern.HandsetGame{})
ab.Run()
ab.SetHandSoft(&bridgePattern.HandsetAddressList{})
ab.Run()
ab = &bridgePattern.HandsetBrandM{}
ab.SetHandSoft(&bridgePattern.HandsetGame{}) ab.Run()
ab.SetHandSoft(&bridgePattern.HandsetAddressList{})
ab.Run()