命令模式也叫动作
,事务
,Action
,Transaction
,Command
。
命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销操作。
1 | // pkg/kubelet/config/config.go |
PodConfig
结构体使用了命令模式
的思想,将多个来源的 Pod
配置信息抽象为一个接口,通过 mux
对象实现了命令对象的统一管理和执行,同时通过 updates
通道将执行结果传递给其他组件。这样做的好处是可以很方便地扩展 Pod
配置来源的种类,也可以保证不同来源的更新按顺序执行,避免了竞态问题。
1 | // pkg/kubelet/kubelet.go |
REF:
1.https://refactoringguru.cn/design-patterns/command
2.pkg/kubelet/config/config.go
3.pkg/kubelet/kubelet.go