go依赖注入简单例子inject

go 依赖注入

说明

软件构建的核心就是管理复杂度。 - 《Code Complete》

解耦组件之间的依赖关系,避免手动配置每个组件的依赖关系。

利用库 github.com/facebookgo/inject

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的繁昌网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

例子

package main

import (
    "fmt"
    "github.com/facebookgo/inject"
)

type DBEngine struct {
    Name string
}

type UserDB struct {
    Db *DBEngine `inject:""`
}

type UserService struct {
    Db *UserDB `inject:""`
}

type App struct {
    Name string
    User *UserService `inject:""`
}

func (a *App) Create() string {
    return "create app, in db name:" + a.User.Db.Db.Name+" app name :"+ a.Name
}

type Object struct {
    App *App
}

func Init() *Object {
    db := DBEngine{Name: "db1"}
    var g inject.Graph
    app := App{Name: "go-app"}

    _ = g.Provide(
        &inject.Object{Value: &app},
        &inject.Object{Value: &db},
    )
    _ = g.Populate()
    return &Object{
        App: &app,
    }

}

func main() {
    obj := Init()
    fmt.Println(obj.App.Create())
}

打印结果

create app, in db name:db1 app name :go-app

网页标题:go依赖注入简单例子inject
当前网址:http://bzwzjz.com/article/ippods.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 重庆网站制作 盐亭网站设计 网站建设方案 成都网站建设 重庆网站制作 成都网站制作 成都商城网站建设 成都商城网站制作 网站制作 成都网站建设 自适应网站建设 成都网站建设 高端网站设计 成都网站设计 企业网站设计 品牌网站建设 定制网站设计 移动网站建设 手机网站建设 古蔺网站建设 网站建设推广 成都定制网站建设