当前位置: 首页 > wzjs >正文

洛阳市伊滨区建设局网站百度下载免费

洛阳市伊滨区建设局网站,百度下载免费,静态网页模板源码,网站开发成本会计科目在先前一篇文章中,笔者给大家提到了go语言后端编程可以用wire依赖注入模块去简化单例服务的初始化,同时也可以解决服务单例之间复杂依赖的问题。但实事求是来讲,用wire也是有一些学习成本的,wire在帮助解决复杂依赖的问题同时&…

在先前一篇文章中,笔者给大家提到了go语言后端编程可以用wire依赖注入模块去简化单例服务的初始化,同时也可以解决服务单例之间复杂依赖的问题。但实事求是来讲,用wire也是有一些学习成本的,wire在帮助解决复杂依赖的问题同时,也会限定你去用一些特定的编程方式来满足wire的需要,尤其需要你interface给用的更加灵活。

因此今天这篇文章,笔者结合自己的经验,就和大家浅分享下,wire和interface配合的一些经验,让大家以后用wire的时候避免一些坑。

对于wire的build指令而言,build会检查你依赖对象是属于哪种类型,不能出现重复provide某种类型的情况。也就是说,比如你的某个Service需要一个string的member,那这个string就不好单独provide出来,因为其他Service也大概率存在。所以这种情况下,我们需要通过一个string-provider的interface或者struct去对这个string做一个封装,阐明这个参数的独有业务涵义,这样就不会出现依赖重复的情况。

type ThirdPartyClient struct {Client *HttpClientSecret string // 初始情况下,需要提供一个secret参数
}// 一种方式是通过静态config拿,然后wire.Struct给到ThirdPartyClient
type ThirdPartyConfig struct {Secret string
}type ThirdPartyClient struct {Client *HttpClientConfig *ThirdPartyConfig
}func NewThirdPartyClient(httpClient *HttpClient, config *ThirdPartyConfig) *ThirdPartyClient {return &ThirdPartyClient{Client: httpClient,Config: config,}
}// 另一种方式是抽象一个SecretProvider的interface,可以处理动态获取Secret的情况
type ISecretProvider interface {GetSecret() string
}type ThirdPartyClient struct {Client *HttpClientSecretProvider ISecretProvider
}func NewThirdPartyClient(httpClient *HttpClient, secretProvider ISecretProvider) *ThirdPartyClient {return &ThirdPartyClient{Client: httpClient,SecretProvider: secretProvider,}
}

那这里就衍生出新的问题,如果我有很多Secret,一个SecretProvider不够,那怎么办?这个也好办,因为本质上来讲,对于每一个参与wire的实例,我们都需要阐明其的独有业务涵义。也就是说,你得在ISecretProvider基础上,定义IAAASecretProvider、IBBBSecretProvider以及ICCCSecretProvider这种。或者换个例子,我们wire一些缓存模块给业务service,缓存模块就需要这么设计。

type ICache interface {Get(key string) (string, error)Set(key string, value string, expiration time.Duration) error
}type ILocalCache interface {ICache
}type IRemoteCache interface {ICache
}func NewGoCache() ILocalCache {// TODO
}func NewRedisCache() IRemoteCache {// TODO
}

通过这样写,不仅可以区分LocalCache和RemoteCache,满足wire的要求,同时对于其它开发者,也能够清楚知道当前是使用Local和Remote的Cache来做业务逻辑,这样就不会出现误用。

http://www.dtcms.com/wzjs/230676.html

相关文章:

  • 张家口网站建设开发结构优化设计
  • 莱芜网站建设服务太原seo全网营销
  • 新疆乌鲁木齐市建设委员会网站在线收录
  • 徐州金网网站建设小程序开发平台有哪些
  • 铁岭市网站建设公司如何宣传推广
  • 好网站的特点seo查询官方网站
  • 个人网站可以直接做微信登陆吗seo顾问推推蛙
  • 服装网站建设目标客户深圳百度竞价托管公司
  • 做平台还是自己做网站苏州seo服务热线
  • 网站排名logo怎么做网站seo优化徐州百度网络
  • 网站建设微信商城运营点击进入官方网站
  • 本地做网站教程上海百度推广客服电话
  • 网站建设费用如何入账360优化大师官方下载手机
  • 深圳企业建设网站的目的windows优化大师兑换码
  • 林州建筑网官网seo排名优化怎样
  • 网站建设销售技巧疫情排行榜最新消息
  • 网站设计规划范文产品运营方案
  • 宁波个人做网站专业网站建设公司
  • 英文网站建设注意事项电子商务网站推广策略
  • 宁波seo博客seo1短视频网页入口营销
  • 专门做手工的网站seo值怎么提高
  • 网站建设宣传文案企业培训课程开发
  • php网站建设个人小白如何做手游代理
  • 哪些香港网站不能访问google chrome 网络浏览器
  • 苏州精品网站建设hao123上网从这里开始官方
  • wordpress手机视频主题百度优化
  • 挑号网站后台怎么更新关键词优化如何做
  • apache 建立网站站长工具综合查询官网
  • vs2017 做c 网站贵州seo培训
  • 洛阳西工区做网站哪家好西安建站推广