Go 编程模式:k8s Visitor 模式
本篇文章主要想讨论一下,Kubernetes 的
kubectl
命令中的使用到到的一个编程模式 – Visitor(注:其实,
kubectl
主要使用到了两个一个是Builder,另一个是Visitor)。本来,Visitor 是面向对象设计模英中一个很重要的设计模款(参看Wikipedia
Visitor Pattern词条
),这个模式是一种将算法与操作对象的结构分离的一种方法。这种分离的实际结果是能够在不修改结构的情况下向现有对象结构添加新操作,是遵循开放/封闭原则的一种方法。这篇文章我们重点看一下
kubelet
中是怎么使用函数式的方法来实现这个模式的。
本文是全系列中第9 / 10篇: Go编程模式
一个简单示例
我们还是先来看一个简单设计模式的Visitor的示例。
-
我们的代码中有一个
Visitor
的函数定义,还有一个Shape
接口,其需要使用Visitor
函数做为参数。 -
我们的实例的对象
Circle
和Rectangle
实现了Shape
的接口的accept()
方法,这个方法就是等外面给我传递一个Visitor。