在接口中定义算法步骤,子类实现算法步骤。
拉起容器时既可以通过docker,也可以通过containerd。
package main
import "fmt"
type containerHandle struct {
c containerHandler
}
type containerHandler interface {
create() error
start() error
}
func (h containerHandle) startupContainer() error {
if err := h.c.create(); err != nil {
return err
}
if err := h.c.start(); err != nil {
return err
}
return nil
}
type docker struct{}
func (d docker) create() error {
fmt.Println("docker create success")
return nil
}
func (d docker) start() error {
fmt.Println("docker start success")
return nil
}
type containerd struct{}
func (c containerd) create() error {
fmt.Println("containerd create success")
return nil
}
func (c containerd) start() error {
fmt.Println("containerd start success")
return nil
}
func main() {
h := containerHandle{
c: docker{},
}
h.startupContainer()
h.c = containerd{}
h.startupContainer()
}
输出结果
docker create success
docker start success
containerd create success
containerd start success
标签:return,success,containerd,create,模式,start,docker,方法,模板 From: https://www.cnblogs.com/WJQ2017/p/17707455.html