【寒江雪】Go实现模版方法模式
Template Pattern
模版方法设计模式允许把对象不同的部分抽象,在同一段代码中执行相同的逻辑,增加可拓展性。在Go语言中,实现由底层对象实现,而行为由顶层方法控制。
实现
package templateimport "fmt"type Tmpl interface{DoSomething()DoAnything()
}type TmplA struct{}func (this *TmplA)DoSomething(){fmt.Println("TmplA.DoSomething")
}func (this *TmplA)DoAnything(){fmt.Println("TmplA.DoAnything")
}type TmplB struct{}func (this *TmplB)DoSomething(){fmt.Println("TmplB.DoSomething")
}func (this *TmplB)DoAnything(){fmt.Println("TmplB.DoAnything")
}func Operate(tmpl Tmpl){tmpl.DoSomething()tmpl.DoAnything()
}
使用
package mainimport ("projects/DesignPatternsByGo/behavioralPatterns/template"
)func main() {a := template.TmplA{}b := template.TmplB{}template.Operate(&a)template.Operate(&b)}
【寒江雪】Go实现模版方法模式相关推荐
- 模版方法模式/Template Method
模版方法模式/Template Method 意图/适用场景: 模版方法模式其实是一种应用很广泛的模式,特别是在使用抽象类的时候. 模版方法模式中必然有一个核心的抽象类,不能是接口.声明一些抽象方法, ...
- Java设计模式笔记(4)模版方法模式
模版方法模式:定义一个操作中的算法的框架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤. 抽象模版的方法分为两类: 1. 基本方法也叫基本操作,是由子类实现的方 ...
- 模版方法模式 Template Method Pattern — 穷人和富人的不同婚恋历程
说明:我也是初学者,希望大家能提出宝贵意见.另外转载请注明作者左洸和出处博客园,毕竟花费了很长时间才完成. 不管是穷人还是富人,都要谈恋爱结婚,而且每个人的婚恋经历,步骤大体上都是一样的,比如说:见面 ...
- 模版方法模式--旅游签证
模版方法模式–旅游签证 题目 想要出国旅游,基本都要经过以下几个步骤:办护照.办签证.买票.到达. 但是目前有些国家对于中国人是免签的或者是落地签,所以去不同的国家旅行时的具体步骤会有所不同. 请用模 ...
- 设计模式 模版方法模式 展现程序员的一天
继续设计模式~ 模版方法模式 老套路,先看下定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤. 简单看下定义,模版方法定义了一个算 ...
- C++ 模版方法模式
简述 模版方法模式(Template Method Pattern)定义一个操作中算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. | 版 ...
- 设计模式——模版方法模式详解(论沉迷LOL对学生的危害)
0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...
- 详解设计模式:模版方法模式
模板方法模式(Template Method Pattern)也被称为模板模式(Template Pattern),是在 GoF 23 种设计模式中定义了的行为型模式. 模板方法模式 定义一个操作中的 ...
- 设计模式(九)模版方法模式
相关文章 设计模式(一)设计六大原则 设计模式(二)单例模式的七种写法 设计模式(三)建造者模式 设计模式(四)简单工厂模式 设计模式(五)观察者模式 设计模式(六)代理模式 设计模式(七)装饰模式 ...
- Java设计模式——模版方法模式
1.简介 Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template ...
最新文章
- 在MVC的cshtml视图页获取默认路由下的ID值的方法
- verdi windows版本[使用debussy 5.4]
- docker 镜像修改的配置文件自动还原_原创 | 全网最实在的docker入门教程四
- Java 笔试题集锦
- 怎么把pdf文件转换成可编辑的word文档
- 天梯赛 L1-027 出租 (20 分)
- 网站访问优化,未完待续
- java hashtable 遍历_Java HashTable forEach()用法及代码示例
- 洛谷P3588 [POI2015]PUS(线段树优化建图)
- CoolUIViewAnimations
- 2021-2025年中国电子薄膜开关行业市场供需与战略研究报告
- E-mail和IM真的应该被监控么?
- Kettle下载资源
- C(每日一题)——数据结构——创建一个线性链表(详细过程)
- 关闭mongodb数据库 (netstat -lanp | grep “27017“)
- 麻省理工学院——人工智能公开课总结02
- Windows系统中owner owned 关系和 parent child关系
- ESP32开发二_LED闪烁灯
- JavaDay13 抽象类 、接口、多态
- 谷歌google百度baidu搜索常用指令:inurl,intitle,site,domain,intext,filetype
热门文章
- 用Python画出奥运五环图 (Python经典编程案例)
- spring data jpa 出现Not a managed type
- 盲修瞎练路漫漫,名师点化三日成[转]
- Netty客户端断线重连
- 点燃我温暖你 李峋 两种爱心代码
- 2022年电脑杀毒软件PK
- 比较好的java网站[推荐]
- 在matlab中字母的小写转换成大写字母,wps文字怎么将大写字母转换成小写字母
- WEB服务器硬件配置要求
- Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes解决办法