goft
搜索文档…
goft
gin脚手架使用文档
所需环境
建议的目录结构
配置
最简单的启动代码
出错跟踪
自定义错误展示
覆盖系统内置异常处理
路由
路由写在一个文件里
常规设置
控制器
控制器形式
控制器方法
控制器方法不想返回值
输出JSON
获取请求对象
全局中间件
基本定义
注册中间件
示例1:判断token参数
示例2:修改响应内容
跨域中间件
路由级中间件
基本定义
示例:参数验证和业务分离
依赖注入
基本定义
注册依赖配置
基本使用
注入Gorm和XOrm
精简版领域驱动
基本说明和概念
基本分层
领域层
领域层之实体
领域层之值对象
领域层之仓储
领域层之聚合
领域服务层
应用层(application)
应用层之DTO
DTO和实体映射
应用层之应用服务层
代码落地
由
GitBook
提供支持
领域层之值对象
用来描述一个事物的特征,没有唯一标识的对象
譬如用户的QQ、手机等。其实除了唯一标志,其他任何字段都可以是值对象
值对象有2个重要原则
1、实体只能通过ID(唯一标识) 来判断两者是否相同
2、而值对象。只需根据“值”就能判断两者是否相等
不可变的特性
修改值对象。必须传入新对象
来个示例:
首先这是实体 -- 用户实体
type UserModel struct {
UserId int `gorm:"column:user_id;primary_key;auto_increment" json:"user_id" xorm:"'user_id'"`
UserName string `gorm:"column:user_name" json:"user_name" xorm:"'user_name'"`
Extra *valueobjs.UserExtra `gorm:"embedded"`//值对象
}
这是值对象-- 用户值对象,包含了QQ、手机等
type UserExtra struct {
UserPhone string `gorm:"column:user_phone" json:"user_phone" xorm:"'user_phone'"`
UserQQ string `gorm:"column:user_qq" json:"user_qq" xorm:"'user_qq'"`
UserCity string `gorm:"column:user_city" json:"user_city" xorm:"'user_city'"`
}
在这里面,假设userid 是唯一标识
那么
user1:=&UserModel{UserId:101,UserName:"lisi"}
user2:=&UserModel{UserId:102,UserName:"lisi"}
这两个实体,哪怕都叫lisi。但是ID不同,所以这两个实体是不一样的
但是如果这两个实体的QQ、手机和所在城市都一样,那么可以认为这两个用户实体的“Extra值”是一样的
精简版领域驱动 - 以前
领域层之实体
下一个 - 精简版领域驱动
领域层之仓储
最近更新
1yr ago
复制链接
大纲
用来描述一个事物的特征,没有唯一标识的对象
来个示例: