Uber 最近开源了内部的编码规范”Uber Go Style”,在阅读中看到这个优雅的设计模式,记录一下。
- 分类:创建型
- 功能:利用不定数量、不定类型的参数作为可选项传入构造函数或普通函数,优雅的实现选项设置、默认值功能
- 备注:如果语言本身支持参数默认值,则直接用默值即可;只如果像 Go 这样没有默认值但有不定数量参数的语言,可以用这个模式实现;如果即没有参数默认值也没有不定数量参数,可以用 Option 数组替代。
问题场景
有一个类,在构造时有多个可选参数。通常为了兼容所有的可选参数,我们要让每个可选项都在参数有一个占位,构造时如果不需要这个选项则传一个默认值,如下:
1 |
|
模式示例
1 |
|
@startuml
@enduml