什么是依赖注入
小明有一台小米手机,他喜欢打游戏,抢红包,但是他需要依赖小米手机去打游戏,听音乐。
有一天,手机坏了,换成了苹果手机,他就需要去重构自己关于打游戏,听音乐的代码,把小米手机都换成苹果手机。
所以依赖注入就来了,可以把手机抽化成一个对象,作为小明的成员,每次构造小明之前传入小明的手机名称就好。
go实现代码
package main
import "fmt"
//手机
type Phone interface {
ListenMusic() //听音乐
PlayGame() //打游戏
}
//小明
type People struct {
Phone Phone
}
//小米手机
type MiPhone struct{}
func (r MiPhone) ListenMusic() {
fmt.Println("小米手机听音乐")
}
func (r MiPhone) PlayGame() {
fmt.Println("小米手机打游戏")
}
//苹果手机
type iPhone struct{}
func (r iPhone) ListenMusic() {
fmt.Println("苹果手机听音乐")
}
func (r iPhone) PlayGame() {
fmt.Println("苹果手机打游戏")
}
func main() {
ThePeople := People{Phone: MiPhone{}}
ThePeople.Phone.ListenMusic()
ThePeople.Phone.PlayGame()
fmt.Println("-------更改我使用的手机-------")
ThePeople.Phone = iPhone{} //换成了苹果手机,不需要重构关于小明的代码
ThePeople.Phone.ListenMusic()
ThePeople.Phone.PlayGame()
}
输出结果: