zoukankan      html  css  js  c++  java
  • Kubernetes源码-SchemeBuilder

    SchemeBuilder

    用于存放处理 Scheme 的函数

    type SchemeBuilder []func(*Scheme) error 

    NewSchemeBuilder

    创建并初始化 SchemeBuilder

    func NewSchemeBuilder(funcs ...func(*Scheme) error) SchemeBuilder {
        var sb SchemeBuilder
        sb.Register(funcs...)
        return sb
    }

    Register

    向 SchemeBuilder 注册处理 Scheme 的函数

    func (sb *SchemeBuilder) Register(funcs ...func(*Scheme) error) {
        for _, f := range funcs {
            *sb = append(*sb, f)
        }
    }

    AddToScheme

    将 SchemeBuilder 中的函数作用于 Scheme

    func (sb *SchemeBuilder) AddToScheme(s *Scheme) error {
        for _, f := range *sb {
            if err := f(s); err != nil {
                return err
            }
        }
        return nil
    }

    Usage

    v1

    package SchemeBuilderV1
    var (
        SchemeBuilderV1 = runtime.NewSchemeBuilder(addKnownTypes)
        AddToScheme = SchemeBuilderV1.AddToScheme
    )
    
    func addKnownTypes(scheme *runtime.Scheme) error { ... }

    v2

    package SchemeBuilderV2
    var (
        SchemeBuilderV2 = runtime.NewSchemeBuilder()
        AddToScheme = SchemeBuilderV2.AddToScheme
    )
    
    func init() { SchemeBuilder.Register(addKnownTypes) }
    
    func addKnownTypes(scheme *runtime.Scheme) error { ... }

    AddToScheme

    scheme := runtime.NewScheme()
    if err := SchemeBuilderV1.AddToScheme(scheme); err != nil { ... }
    if err := SchemeBuilderV2.AddToScheme(scheme); err != nil { ... } 
  • 相关阅读:
    Dialog对话框
    Intent的七大属性
    Activity启动模式
    Android知识体系
    Activity生命周期
    Intent实现页面跳转和传值
    Android超链接
    上传文件
    XMLSAX解析
    XmlPull
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/14621864.html
Copyright © 2011-2022 走看看