面试题答案
一键面试实现思路
- 定义数据库连接接口:首先定义一个接口来抽象数据库连接的操作,这样不同类型的数据库连接(如MySQL、PostgreSQL等)都可以实现这个接口。
- 基础注入模块:编写一个基础的注入模块,用于创建并返回数据库连接实例。这个模块可以通过依赖注入的方式将数据库连接提供给其他业务逻辑模块。
- 业务逻辑模块复用:业务逻辑模块通过依赖注入的方式接受数据库连接实例,而不是自己创建,从而复用基础注入模块的逻辑。
示例代码
package main
import (
"fmt"
)
// 定义数据库连接接口
type Database interface {
Connect() string
}
// MySQL数据库连接实现
type MySQL struct{}
func (m *MySQL) Connect() string {
return "Connected to MySQL"
}
// 基础注入模块
func ProvideDatabase() Database {
return &MySQL{}
}
// 业务逻辑模块
type BusinessLogic struct {
db Database
}
func NewBusinessLogic(db Database) *BusinessLogic {
return &BusinessLogic{
db: db,
}
}
func (b *BusinessLogic) DoWork() {
result := b.db.Connect()
fmt.Println(result)
}
你可以使用以下方式调用:
func main() {
// 获取数据库连接实例
db := ProvideDatabase()
// 将数据库连接注入业务逻辑模块
bl := NewBusinessLogic(db)
bl.DoWork()
}