代码位置:k8s.io/apimachinery/pkg/runtime/serializer/recognizer
typical case
recognizer.decoder
带有修饰器模式
tree-like
code
因为 recognizer.decoder 实现了 recognizer.RecognizingDecoder 和 runtime.Decoder 接口,所以 recognizer.decoder 可以是本身的子节点。
recognizer.RecognizingDecoder
type RecognizingDecoder interface {
runtime.Decoder
RecognizesData(peek io.Reader) (ok, unknown bool, err error)
}
recognizer.decoder
type decoder struct {
decoders []runtime.Decoder
}
decoder.NewDecoder
func NewDecoder(decoders ...runtime.Decoder) runtime.Decoder {
return &decoder{
decoders: decoders,
}
}