go设计模式
文章平均质量分 50
设计模式用go语言实现
未来谁可知
这个作者很懒,什么都没留下…
展开
-
Golang之HTTP服务中间件设计(四)
中间件:将这些非业务逻辑代码抽象出来,封装好,提供接口给控制器使用装饰器模式:将最核心的代码一层层装饰,返回的时候一层层出来首先我们从之前的Controller开始,之前写了一个可以超时的controller但是那是写在了代码里,我们能不能变成中间件为我们自动去判断超时呢!首先在写下我们的中间件方法:但是这样的调用的话就变成了如果有新的中间件要包裹,那岂不是显示写出来会很长,一层一层的!而且这个实现,也只能为一个controller需要的时候去包裹一下,只是省了写多个超时的代码,但还是要自己显示的调用!原创 2022-07-09 12:04:34 · 694 阅读 · 0 评论 -
职责链模式 GoLang实现
职责链模式 GoLang实现工欲善其事,必先利其器!职责链模式用于分离不同职责,并且动态组合相关职责。1. 需求实现一个工具能准确判断英雄能秒人的技能伤害!方便开挂时选择最优技能,直接秒人,有的英雄现如今只有三个技能,但也不排除之后重做会有四个技能,要求实现简单上手,易扩展!技能 2 进来了技能 2 满足条件释放 造成 9000 伤害技能 3 进来了技能 3 满足条件释放 造成 10000 伤害2021/12/31 15:26:31 技能1,伤害7000有点低不太行啊!推荐你换其他技能2原创 2021-12-31 15:47:04 · 518 阅读 · 0 评论 -
选项模式-Golang设计模式
选项模式-Golang设计模式tips:对结构体中的字段,会频繁变化、需要灵活配置、有默认值的场景,可能会用到 Option 模式。1.场景往简单来说,有下面这一个需求:如果创造了一个英雄,我想修改它的属性,怎么才能方便的去修改,包括之后新增的字段,如果不直接用结构体.字段的形式,保证了修改英雄属性的安全性,2021/12/30 09:30:52 英雄创造后属性为: &{1001 Default 1 1 map[]}2021/12/30 09:30:52 英雄魔改后属性为: &{原创 2021-12-30 09:37:22 · 554 阅读 · 0 评论 -
外观模式-Golang实现
外观模式-Golang实现1.模拟场景实现需求为玩家拥有多个英雄,在部署好英雄之后,只用点击进攻,不用关心每个英雄具体自己的攻击手段!2021/12/29 14:19:48 李信释放大招!2021/12/29 14:19:48 李白释放大招!外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。2.代码实现2.1 Heropackage main// 实例化func NewHero() Hero{ ret原创 2021-12-29 14:35:08 · 270 阅读 · 0 评论 -
go设计模式之美-创建型模式总结
go设计模式之美-创建型模式总结1. 概述 学习这些设计模式更多的是去考量和及时的总结,不是一味的套模板,思考创建对象时是否需要用到设计模式?又该需要哪一种设计模式更合适?我认为这些思想会是学习设计模式最重要的一个得到的东西,所以在此进行总结之前的几个创建型设计模式!2. 总结3. 复习的地址 单例模式饿汉式懒汉式 工厂模式简单工厂工厂方法抽象工厂 建造者模式 原型模式...原创 2021-10-10 22:44:32 · 120 阅读 · 0 评论 -
go设计模式之美-原型模式
go设计模式之美-原型模式1. 定义由于反复创建大量重复对象会造成效率损失,原型模式利用已有原型对象进行复制拷贝的方式来创建新对象,已达到节省创建时间的目的2. 需求项目启动时需要先将游戏的道具配置先加载到内存中每次更新游戏对象数据属性时,需要重新再次加载一遍游戏道具对象的属性数据必须来自同一版本,不能一部分数据来自版本一,更新的一部分来自版本二,所以需要将每次更新的数据全部深拷贝到内存中代码实现package prototypeimport ( "encoding/json"原创 2021-10-10 22:40:36 · 689 阅读 · 0 评论 -
go设计模式之美-建造者模式
go设计模式之美-建造者模式建造模式和工厂模式不同点建造模式用于创造参数复杂的对象,而工厂模式用于创建类型相关的不同对象1. 使用场景这个就非常重要了,因为如果你学了个东西,都不知道用来解决什么问题,你说有什么用?理解使用场景的的重要性要远高于你是不是会实现这个模式,因为只要你知道什么问题可以使用builder模式来解决,那你即使不会写,也可以在调查相关资料后完成。 我不想说一些大而正确的术语来把你搞蒙,我们只针对具体的问题,至于延展性的思考,随着你知识的增长,逐渐会明白的。延展阅读当一个类的原创 2021-10-09 09:45:14 · 169 阅读 · 0 评论 -
go设计模式之美 - 工厂模式
go设计模式之美 - 工厂模式1. 定义工厂模式是一种创建型设计模式,有了工厂只需要知道要制造的东西名字,就能让对应工厂进行生产,不用关心生产过程。2. 优点1、一个调用者想创建一个对象,只要知道其名称就可以了。2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。3、屏蔽产品的具体实现,调用者只关心产品的接口。3. 代码实现3.1 普通工厂package factorytype HeroFactory interface { Name(str string)}type W原创 2021-10-08 22:21:20 · 149 阅读 · 0 评论 -
go设计模式之美 - 单例模式
go设计模式之美 - 单例模式1. 定义一个类只允许创建一个对象或实例,那这个类就是一个单例类,这种设计模式就叫单例模式业务上某些数据只应该保存一份的就比较适合设计为单例类2. 前置知识sync.Once 是 Go 标准库提供的使函数只执行一次的实现,常应用于单例模式,例如初始化配置、保持数据库连接等。作用与 init 函数类似,但有区别。init 函数是当所在的 package 首次被加载时执行,若迟迟未被使用,则既浪费了内存,又延长了程序加载时间。sync.Once 可以在代码的任意原创 2021-10-08 16:14:29 · 129 阅读 · 0 评论