首页 > 其他分享 >模板方法模式

模板方法模式

时间:2023-09-16 22:44:26浏览次数:53  
标签:return success containerd create 模式 start docker 方法 模板

在接口中定义算法步骤,子类实现算法步骤。

拉起容器时既可以通过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

相关文章

  • 迭代器模式
    迭代器能在不暴露复杂数据结构内部细节的情况下遍历其中所有的元素。packagemainimport"fmt"typeIteratorinterface{ hasNext()bool getNext()*User}typeCollectioninterface{ createIterator()Iterator}typeUserstruct{ namestring ageint}t......
  • 设计模式7大原则
    开闭原则对扩展开放,对修改关闭。依赖倒置原则面向接口编程。单一职责原则一个类、接口、方法只负责一项职责。接口隔离原则接口中方法尽量少。迪米特法则尽量降低类与类之间的耦合。里氏替换原则引用父类的地方能使用其子类。合成复用原则尽量使用合成/聚合的方式,不是使用继......
  • NAND/MTD/UBI/UBIFS概念及使用方法
    关键词:NAND,MLC/SLC,Page/SubPage,EraseBlock,OOB,ECC,BitFlip,MTD,UBI,wearing-level,LEB,PEB,EC/VID,Volume,UBIFS等等。 由于调试NANDLinux启动,记录NAND/MTD/UBI/UBIFS点点滴滴。未去分析Kernel对应模块和相关工具代码,仅从使用角度去记录。1.NAND/MTD/UBI/UBIFS整体框架如下是NAND、MT......
  • 前端学习笔记202309学习笔记第八十玖天-方法名对象的封装2
     ......
  • 前端学习笔记202309学习笔记第八十玖天-方法名对象的封装
     ......
  • # hashlib加盐方法
    #先定义md5_obj=hashlib.md5()#输入加密对象md5_obj.update('helloworld')#效果与上面相同,相当于字符串拼接起来md5_obj.update('hello')md5_obj.update('world')#以变量输入:password=123#需要编码输入md5_obj.update(password.encode('utf-8'))#输出结果md5_obj.......
  • 【设计模式】模板方法模式Template Method:实现同一模板框架下的扩展
    (目录)模板方法模式的原理和代码实现都比较简单,也被广泛应用,但是因为使用继承机制,副作用往往盖过了主要作用,所以在使用时尤其要小心谨慎。原理模板方法模式原始定义是:在操作中定义算法的框架,将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某......
  • 【设计模式】访问者模式Visitor:实现对象级别的矩阵结构
    (目录)访问者模式:一个原理看似很简单,但是理解起来有一定难度,使用场景相对较少的行为型模式:它能将算法与其所作⽤的对象隔离开来假如有这样⼀位⾮常希望赢得新客户的资深保险代理⼈。他可以拜访街区中的每栋楼,尝试向每个路⼈推销保险。所以,根据⼤楼内组织类型的不同,他可......
  • 【设计模式】解释器模式Interpreter Pattern:实现自定义配置规则功能
    解释器模式使用频率不算高,**通常用来描述如何构建一个简单“语言”的语法解释器。**它只在一些非常特定的领域被用到,比如:编译器;规则引擎;正则表达式;SQL解析等。不过,了解它的实现原理,可以帮助思考如何通过更简洁的规则来表示复杂的逻辑。模式原理分析解释器模式的原始......
  • 深度学习模型压缩方法概述
    一,模型压缩技术概述知识蒸馏算法整体的框架图如图下所示。图片来源https://intellabs.github.io/distiller/knowledge_distillation.html。三,轻量级模型架构四,模型剪枝模型剪枝(modelpruning)也叫模型稀疏化(modelsparsity)。深度学习模型中一般存在着大量冗余的参数,将权重矩阵中......