领域服务层

基本概念

实现特定于某个领域的任务。当某个操作”不适合”放在聚合(实体)或值对像上时,那么可以使用领域服务

操作内容

1、操作多个聚合根

2、也可以调用仓储层

3、代码可以相对灵活一些

4、命名一般要能直接描述出该代码业务的功能

譬如我们认为(也许你不这么认为)用户登录这块不方便放在聚合方法中

于是编写一个领域服务

type UserLoginService struct {
   userRepo repos.IUserRepo
}
func(this *UserLoginService) UserLogin(userName string,userPwd string ) (string,error)  {
    user:=this.userRepo.FindByName(userName)
    if user.UserId>0{ //有这个用户
      if user.UserPwd==utils.Md5(userPwd){
         //记录登录日志
         return "1000200",nil
      }else{
         return "1000400",fmt.Errorf("密码不正确")
      }
    }else{
      return "1000404",fmt.Errorf("用户不存在")
    }
}

还是那句话,领域驱动根据业务不同 允许有不同的理解

最后更新于