如何优雅的用Golang封装配置项(Functional Options)

如何优雅的用Golang封装配置项(Functional Options),最近要封装一个公共服务,涉及到配置项的地方总是找不到合理的方案,后来看了一下grpc在配置方面的封装,了解到原来是golang特有的Functional Options编程模式,今天分享给大家,希望你能用到,咱们直接来看代码,图片,上面代码很容易,就是想初始化一下Server的配置选项,看起来好像没什么问题,其实问题非常多
,既然配置项想要可选,那么咱们直接来个排列组合,调用不同的初始化方法即可只初始化自己想初始化的非必要选项
,图片,既然上面的例子封装的初始化方法太多,那么咱们就统一用一个方法来解决,图片,咱们引入一个新的结构体Config,把必填的参数放在server里面,非必要的参数放在Congfig里面,图片,咱们来学一学java中的builder模式,图片,接下来咱们就看一看最后的终极解决方案 FUNCTIONAL OPTIONS模式,图片,Golang 由于语言本身的特性,不支持函数重载,函数式选项 的编程模式在一定程度上解决了其他语言需要通过函数重载解决的问题。函数式选项 编程有以下优点:,虽然 函数式选项 编程模式有很多优点,但是设计模式的存在都是为了弥补语言特性的缺陷的一种手段。它是为了解决代码扩展性的问题,往往是通过增加抽象牺牲了简单性,切勿过度使用。有些简单的配置,就不需要设计的这么通用了。,我们一般用来配置一些基础的服务配置,比如MySQL,Redis,Kafka的配置,很多可选参数,可以方便动态灵活的配置想要配置的参数。

文章版权声明

 1 原创文章作者:cmcc,如若转载,请注明出处: https://www.52hwl.com/21815.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年3月5日 上午12:00
下一篇 2023年3月7日 下午10:34