![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Golang 设计模式
Go语言实现的设计模式,因为本人是游戏公司,大多业务场景是游戏业务,如果有更好的业务场景,烦请留言,谢谢~
_好吗_好的
Stay Hungry,Stay Foolish.
展开
-
GO设计模式 - 结构型 - 代理模式
简介 当无法或不想直接引用某个对象或访问某个对象存在困难时,或者想加强某个对象的功能时,可以通过代理对象来间接访问 目标 保护目标对象 增强目标对象 案例场景 在游戏公司中,如果该公司内部如果使用DDD和中台,那么会将登陆作为通用业务,在这种场景下,每个游戏会依赖到这个通用业务, 那么,每个游戏的登录其实可以看做是一种代理,每个游戏根据自身需求基于登录通用业务进行拓展 代码 type IUser interface { Login(userId, p...原创 2021-01-07 22:39:06 · 211 阅读 · 1 评论 -
GO设计模式 - 行为型 - 中介者模式
简介 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变他们之间的交互 案例解释 当具体对象注册到中介者中,客户端需要更新某个具体对象值的时候,就可以直接将注册的type传入中介者来调用具体的对象 应用场景 游戏中的道具、皮肤和英雄等,其实可以看成一个游戏商品,比如英雄联盟中英雄,皮肤,道具,精粹和点券 优点 可以实现调用者与一系列同类对象解耦 代码如下 //商品种类 type ItemType uint8 var ( .原创 2021-01-01 10:29:53 · 233 阅读 · 1 评论 -
GO设计模式 - 行为型 - 责任链模式
简介 简单来说责任链模式就是将一个处理过程看成一个处理链,处理过程沿着处理链进行,每个处理结点都是一个处理者,当操作到某个结点时,由该节点的处理者进行处理,处理完后交给下一个处理者 例子 比如游戏世界你买一样东西,也可以用责任链模式来做,在游戏微服务时代,各个业务模块划分为不同的BC(如有不懂,可以先去了解领域驱动设计) 首先,调用仓库BC检验你的元宝是否足够,不够就报错,够就进行下一步 其次,去商店BC(也就是本BC)进行购买 再次,调用仓库BC进行扣除元宝 ...原创 2020-12-11 15:16:51 · 342 阅读 · 0 评论 -
GO设计模式 - 结构型 - 享元模式
简介 享元模式就是将大量对象共有的部分抽取出来,供这些对象共享使用。而这些元素不同的部分,会以参数的形式注入具体享元的相关方法中。 PS:其实感觉有点像Sync.Pool,本质都是缓存共享对象,降低内存消耗和减轻GC压力,但是仔细看下来还是和Sync.Pool有点区别的 本质 缓存共享对象,降低内存消耗 应用场景 在游戏业务开发的场景中,创建大量相同或相似对象实例的问题 例如,游戏业务中的围棋和五子棋中的黑白棋子 代码实现 //People接口 type People in...原创 2020-12-09 23:05:50 · 215 阅读 · 0 评论 -
GO设计模式 - 创建型 - 建造者模式
简介 建造者模式将一个复杂对象的构建和表示进行分离,可以实现同一个构造过程不同表示 例子解释:比如同样构造一个人的外观,设置帽子、衣服、裤子、袜子、鞋子后的构建和只设置帽子后的构建所产生的一个人外观是不同的 应用场景 比如在一个英雄联盟游戏中,创建云顶之弈的过程我们并不关注,我们只关注是否可以设置背景,特效啥的,所以可以用建造者模式来设计这部分功能,这样我们就可以设置好背景、特效后再来创建云顶之弈 package creational import "fmt" //定义一个产品(..原创 2020-12-09 17:43:17 · 238 阅读 · 0 评论