当前位置: 首页 > article >正文

设计模式-Adapter(适配器模式)GO语言版本

前言

个人感觉Adapter模式核心就在于接口之间的转换。将已有的一些接口转换成其他接口形式。并且一般用于对象上,而不是系统上

 

问题

就用一个简单的问题,懂数据结构的同学可能知道双端队列。那么就用双端队列实现一个栈(stack)或者是普通队列(queue)

解决方案

type Stack struct {
	element *list.List
}

func NewStack() *Stack {
	return &Stack{
		element: list.New(),
	}
}

func (s *Stack) Push(value interface{}) {
	s.element.PushBack(value)
}

func (s *Stack) Pop() interface{} {
	lastElement := s.element.Back()
	if lastElement != nil {
		s.element.Remove(lastElement)
		return lastElement.Value
	}
	return nil
}

上面的代码就是一个栈的简单实现。仅仅是把list的功能直接拿来修改了一下。

总结

适配器遵循开闭原则。 只要客户端代码通过客户端接口与适配器进行交互, 你就能在不修改现有客户端代码的情况下在程序中添加新类型的适配器。

但同样代码整体复杂度增加, 因为你需要新增一系列接口和类。 有时直接更改服务类使其与其他代码兼容会更简单。

适配器模式的核心设计思想,是对对象级别的进行修改,并且利用已有功能进行修改,范围较小。


http://www.kler.cn/a/404405.html

相关文章:

  • 解决vue-pdf的签章不显示问题
  • Docker 容器的初始化设置
  • 如何在 PyCharm 中配置 HTTP 代理以确保网络连接的顺畅性
  • Python之time时间库
  • Linux驱动开发(9):pinctrl子系统和gpio子系统--led实验
  • 关于一次开源java spring快速开发平台项目RuoYi部署的记录
  • 2024信创数据库TOP30之达梦DM8
  • php:nginx如何配置WebSocket代理?
  • 接雨水
  • 智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序8 进化论及科学的信息技术创新:分布式账本/区块链/智能合约 之2
  • yolov5 数据集分享:纯干货
  • GEE 训练教程——Sentinel-1的卷积(核函数)的分析和可视化
  • this.$prompt 限制输入长度
  • Windows环境GeoServer打包Docker极速入门
  • 出海第一步:搞定业务系统的多区域部署
  • 大模型-微调与对齐-非强化学习的对齐方法
  • CSS3 动画:前端开发的动态美
  • 实现了图像处理、绘制三维坐标系以及图像合成的操作
  • 对原jar包解压后修改原class文件后重新打包为jar
  • RestTemplate应用实践总结
  • 请问有什么限制预约报名人数的微信小程序/系统?
  • Arcgis 绘制地图
  • buuoj WEB做题笔记
  • scratch二次开发:控制blocks某些块不可以被删除
  • 堤防安全监测系统方案
  • 【C++篇】从基础到进阶:全面掌握C++ List容器的使用