写点什么

[ Golang 中的 DDD 实践] 仓储

用户头像
baiyutang
关注
发布于: 刚刚
[ Golang 中的 DDD 实践] 仓储

现在很难想象编写应用程序在运行时不访问存储,可能甚至不需要编写部署脚本,他们需要访问配置文件,在某种方式上,仍然是存储类型。


每当你编写应用解决真实业务世界的问题时,你需要连接数据库、外部接口、一些缓存系统,等等,这是不可避免的。


在某种角度,使用 DDD 模式解决这些需求并不奇怪。当然,DDD 并没有发明“仓库”和很多其他文献中的器具,但是 DDD 变得更清晰。


防腐层

领域驱动设计一个你可以应用在软件开发很多方面和地方的法则。但是,主要的焦点还是应该放在领域层,我们业务逻辑所在的地方。


仓储总代表连接外部世界而保持的技术细节的结构,它已经不属于业务逻辑了。


但是,有时,我们需要从领域层访问仓储。因为领域层是不与其他层通信的底层。我们定义仓储为接口。

import (	"context"
"github.com/google/uuid")
type Customer struct { ID uuid.UUID // // some fields //}
type Customers []Customer
type CustomerRepository interface { GetCustomer(ctx context.Context, ID uuid.UUID) (*Customer, error) SearchCustomers(ctx context.Context, specification CustomerSpecification) (Customers, int, error) SaveCustomer(ctx context.Context, customer Customer) (*Customer, error) UpdateCustomer(ctx context.Context, customer Customer) (*Customer, error) DeleteCustomer(ctx context.Context, ID uuid.UUID) (*Customer, error)}
复制代码


发布于: 刚刚阅读数: 4
用户头像

baiyutang

关注

广州 2017.12.13 加入

Microservices | Golang | Cloud Nitive | “Smart work,Not hard”

评论

发布
暂无评论
[ Golang 中的 DDD 实践] 仓储