13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

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

导读​

最近要封装一个公共服务,涉及到配置项的地方总是找不到合理的方案,后来看了一下grpc在配置方面的封装,了解到原来是golang特有的Functional Options编程模式,今天分享给大家,希望你能用到,咱们直接来看代码

版本V1

上面代码很容易,就是想初始化一下Server的配置选项,看起来好像没什么问题,其实问题非常多

版本V2

既然配置项想要可选,那么咱们直接来个排列组合,调用不同的初始化方法即可只初始化自己想初始化的非必要选项

版本V3

既然上面的例子封装的初始化方法太多,那么咱们就统一用一个方法来解决

版本V4

咱们引入一个新的结构体Config,把必填的参数放在server里面,非必要的参数放在Congfig里面

版本V5

咱们来学一学java中的builder模式

版本V6

接下来咱们就看一看最后的终极解决方案 FUNCTIONAL OPTIONS模式

总结​

Golang 由于语言本身的特性,不支持函数重载,函数式选项 的编程模式在一定程度上解决了其他语言需要通过函数重载解决的问题。函数式选项 编程有以下优点:

虽然 函数式选项 编程模式有很多优点,但是设计模式的存在都是为了弥补语言特性的缺陷的一种手段。它是为了解决代码扩展性的问题,往往是通过增加抽象牺牲了简单性,切勿过度使用。有些简单的配置,就不需要设计的这么通用了。

函数式选项模式的使用场景有哪些呢:

我们一般用来配置一些基础的服务配置,比如MySQL,Redis,Kafka的配置,很多可选参数,可以方便动态灵活的配置想要配置的参数。


网页标题:如何优雅的用Golang封装配置项(Functional Options)
转载源于:http://cdbrznjsb.com/article/cooijji.html

其他资讯

让你的专属顾问为你服务