发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

使用Go语言实现Event Sourcing源码

              
2015-02-10 11:04
赞助商链接

这是一个针对频繁出差飞行会员是否升级为模型的Go语言ES实现:
jen20/go-event-sourcing-sample · GitHub

使用聚合体实体模型定义一个struct,其中主要是可变的状态,比如哪些客户当飞行里程达到后能够升级到黄金会员,需要一个可变状态来跟踪其等级积分(tierPoint):


type FrequentFlierAccount struct {
id string
miles int
tierPoints int
status Status
}


其中Status是使用不可变的ENUM用于只读:

type Status int
const (
StatusRed Status = iota
StatusSilver Status = iota
StatusGold Status = iota
)

这个聚合体实体模型的状态是通过下面三个事件来改变的:


type FrequentFlierAccountCreated struct {
AccountId string
OpeningMiles int
OpeningTierPoints int
}

type StatusMatched struct {
NewStatus Status
}

type FlightTaken struct {
MilesAdded int
TierPointsAdded int
}


以上基本模型设计完毕后,可以实现拓展服务功能,比如:从历史资料加载信息Loading from History;改变跟踪Change Tracking;具体可参考:英文原文
[该贴被banq于2015-02-10 11:05修改过]

DDD案例      EventSourcing      go语言     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com