Go 语言实现 23 种设计模式适配器
Go 语言实现 23 种设计模式适配器
将一个类型的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能一起工作的类可以一起工作。
Example_one
package mainimport "fmt"// Adaptee 适配者
type MyLegacyPrinter struct{}func (l *MyLegacyPrinter) Print(s string) (newMsg string) {newMsg = fmt.Sprintf("Legacy Printer: %s\n", s)println(newMsg)return
}// 目标抽象类
type LegacyPrinter interface {Print(s string) string
}// 客户要求接口
type ModernPrinter interface {PrintStored() string
}// 适配器
type PrinterAdapter struct {OldPrinter LegacyPrinterMsg string
}func (p *PrinterAdapter) PrintStored() (newMsg string) {if p.OldPrinter != nil {newMsg = fmt.Sprintf("Adapter: %s", p.Msg)newMsg = p.OldPrinter.Print(newMsg)} else {newMsg = p.Msg}return
}func main() {// 旧的使用方式var old_adapter MyLegacyPrinterold_adapter.Print("Old ")// 适配器模式msg := "New"new_adapter := PrinterAdapter{OldPrinter: &MyLegacyPrinter{}, Msg: msg}returnMsg := new_adapter.PrintStored()fmt.Print(returnMsg)
}
Go 语言实现 23 种设计模式适配器相关推荐
- Go 语言实现 23 种设计模式 单例模式
Go 语言实现 23 种设计模式 单例模式 单例模式 单例模式是一种常用的软件设计模式,在使用过程中,单例对象的类只有一个实例.使用单例模式,1 可以节省内存等资源,例如windows操作系统的资源管 ...
- Go 语言实现 23 种设计模式(修饰器)
修饰器 修饰器模式就是在不改变对象内部结构的情况下,动态扩展它的功能. Example_one type Object func(string) stringfunc Decorate(fn Obje ...
- java外围设计_Java 编程(23 种设计模式)
简介 在一般的程序开发过程中,初中级程序员接触的程序设计模式是比较少的.最常见的可能就是单例模式.工厂模式.抽象工厂模式等等,但实际上程序中的设计模式是非常多的,具体可以分为 23 种设计模式.设计模 ...
- 快来,这里有23种设计模式的Go语言实现
摘要:设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式是为了可重用代码.让代码更容易被他人理解并且保证代码可靠性. 本文分享自华 ...
- 从追MM谈23种设计模式
从追MM谈Java的23种设计模式 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说&quo ...
- 23种设计模式的有趣见解 .
转载地址:http://blog.csdn.net/leichelle/article/details/7999588 23种设计模式的有趣见解 23种设计模式的有趣见解创 建型模式 1.FACTOR ...
- JAVA设计模式总结之23种设计模式
一.什么是设计模式 ...
- 23种设计模式简介_设计模式简介
23种设计模式简介 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要 ...
- 系统架构设计师 - 23种设计模式(GOF)
文章目录 总览 创建型(5种) 工厂方法 Factory Method 抽象工厂 Abstract Factory 生成器模式 Builder 原型模式 Prototype 单例模式 Singleto ...
最新文章
- 实验七:层叠样式表(二)
- 2020年度“社区之星”出炉!原来社区里的技术大佬们是这样成长起来的!
- 利用Landsat8 进行利用土地分类
- TabHost的使用(二):实现TabHost.TabContentFactory接口
- 1250 Fibonacci数列(矩阵乘法快速幂)
- 嘘,Python 优化提速的 8 个小技巧
- C#中使用jieba.NET、WordCloudSharp制作词云图
- knex 单表查询_knex.js
- jdbc连接mysql数据库过程_jdbc连接数据库的步骤
- 发起图片请求的几种可能性(webkit内核)
- jdk5.0下支持JSR-223的方法
- 金融行业灾备压力大?看中和农信如何从容应对
- stm32编程初始化设备步骤
- 华为校园招聘面试题目及流程
- 快速搞懂MD5解密原理,了解常用的MD5在线解密网站
- [歌词]《一花依世界》《君がいる世界へ》歌词假名罗马音
- 计算机无法更改开机密码,不能修改win7电脑开机密码是怎么回事
- JavaSE语言基础
- 031永久储存:腌制一缸美味的泡菜
- win10下速腾聚创RS-Lidar-32配置教程