当前位置: 首页 > news >正文

培训网站开发需求说明书沧州网站seo公司

培训网站开发需求说明书,沧州网站seo公司,朝阳网站开发联系电话,烟台制作网站的公司简介文章目录 前言1 项目目录结构:2 初始化函数3 router4 api5 service6 dao7 Reference 前言 为降低代码耦合性,采用依赖注入的设计模式。原始请求路径:router -> api -> service -> dao。请求的为实际方法,具有层层依赖的…

文章目录

  • 前言
    • 1 项目目录结构:
    • 2 初始化函数
    • 3 router
    • 4 api
    • 5 service
    • 6 dao
    • 7 Reference

前言

为降低代码耦合性,采用依赖注入的设计模式。原始请求路径:router -> api -> service -> dao。请求的为实际方法,具有层层依赖的关系。现将方法抽象为接口,即a依赖b,但a不创建(或销毁)b,仅使用b,b的创建(或销毁)交给容器。

1 项目目录结构:

├─ddd
│  ├─router.go
│  │ 
│  ├─api
│  │  └─api_abstract.go   // 抽象接口
│  │  └─api_dog.go   // dog实现接口
│  │ 
│  ├─service
│  │  └─srv_abstract.go 
│  │  └─srv_dog.go  
│  │  
│  ├─dao
│  │  └─dao_abstract.go  
│  │  └─dao_dog.go  
│  │  
│  ├─model
│  │  ├─dto
│  │  └─schema

2 初始化函数

// 依赖注入
func InitDog() *DogApiImpl  {d := dao.NewDogDaoImpl(global.DB)s := service.NewDogSrvImpl(d)return api.NewDogApiImpl(s)
}

3 router

func Router() *gin.Engine {dog := init.InitDog()r.GET("/info", dog.Info)...
}

4 api

api_abstract.go中为抽象接口:

type DogAPIIface interface {Create(ctx *gin.Context)Update(ctx *gin.Context)Info(ctx *gin.Context)List(ctx *gin.Context)
}

api_dog.go中为api的实现方法:

type DogApiImpl struct {srv service.DogSrvIface
}var _ DogAPIIface = (*DogApiImpl)(nil)func NewDogApiImpl(srv service.DogSrvIface) *DogApiImpl {return &DogApiImpl{srv: srv,}
}func (da *DogApiImpl) Info(ctx *gin.Context) {var req dto.DogInfoReqif err := ctx.ShouldBindUri(&req); err != nil {return}res, err := da.srv.Info(ctx, req.ID)if err != nil {return}helper.Response.ResponseSuccessWithData(ctx, consts.Success, res)
}// 其他待实现方法
func (da *DogApiImpl) Create(ctx *gin.Context) {
}...

5 service

srv_abstract.go中为抽象接口:

type DogSrvIface interface {Create(ctx *gin.Context, req *dto.DogCreateReq) errorUpdate(ctx *gin.Context, req *dto.DogUpdateReq) errorInfo(ctx *gin.Context, req *dto.DogInfoReq) (*dto.DogInfoRes, error)List(ctx *gin.Context, req *dto.DogListReq) ([]*dto.DogInfoRes, int, error)
}

srv_dog.go中为service的实现方法:

type DogSrvImpl struct {dao dao.DogDaoIface
}var _ DogSrvIface = (*DogSrvImpl)(nil)func NewDogSrvImpl(dao dao.DogDaoIface) *DogSrvImpl {return &DogSrvImpl{dao: dao,}
}func (ds *DogSrvImpl) Info(ctx *gin.Context, req *dto.DogInfoReq) (*dto.DogInfoRes, error) {var data dto.DogInfoReq// 具体业务逻辑dog, err := ds.dao.FindByID(ctx, id)if err != nil {return nil, err}return &dog, err
}
...

6 dao

dao_abstract.go中为抽象接口:

type DogDaoIface interface {Create(ctx *gin.Context, req *dto.DogCreateReq) errorUpdate(ctx *gin.Context, req *dto.DogUpdateReq) errorInfo(ctx *gin.Context, req *dto.DogInfoReq) (*dto.DogInfoRes, error)List(ctx *gin.Context, req *dto.DogListReq) ([]*dto.DogInfoRes, int, error)
}

dao_dog.go中为dao的实现方法:

type DogDaoImpl struct {db *gorm.DB
}var _ dao.DogDaoIface = (*DogDaoImpl )(nil)func NewDogDaoImpl(db gorm.DB) *DogDaoImpl{return &DogDaoImpl{db: &db,}
}func (ds *DogSrvImpl) Info(ctx *gin.Context, req *dto.DogInfoReq) (*dto.DogInfoRes, error) {// 具体业务逻辑return nil, nil
}
...

7 Reference

https://blog.hackerpie.com/posts/testing/golang-write-testable-codes/
https://juejin.cn/post/7146852457774055437

http://www.dt0577.cn/news/19938.html

相关文章:

  • 做网站的业务分析论坛推广的特点
  • 网站推广产品品牌推广是做什么的
  • 网络营销公司做得比较好的seo教程有什么
  • 寻找专业网站建设含有友情链接的网页
  • 江门制作网站公司软文营销方案
  • 陕西省建设资格注册中心网站百度seo怎么做
  • 咋做黄页网站网站制作建设公司
  • 全国网站建设有实力杭州百度人工优化
  • 微信微网站开发网页代码
  • 做办公设备网站市场监督管理局官网入口
  • 如何做网站seo电商软文范例300字
  • 做视频网站 买带宽谷歌官网入口手机版
  • 如何运营好一个网站网络怎么推广自己的产品
  • 做网站 前台和后台制作一个网站需要多少费用
  • 衡阳高端网站建设网络营销品牌
  • 网站建设趋势seo常用工具网站
  • 注册公司需要多久的时间seo是什么的缩写
  • 安丘做网站的公司app推广引流方法
  • 网站开发建设流程晚上偷偷看b站软件推荐
  • 入侵织梦网站营销策划与运营公司
  • 开一间网站建设有限公司优化建站
  • 株洲做网站渠道电话win10最强优化软件
  • 国内哪个网站做水产比较大百度空间登录
  • 营销型网站模板中小企业网络营销现状
  • 做类似电影天堂的网站违法吗广州百度seo排名优化
  • 型云网站建设热门国际新闻
  • 网站后台数据库管理百度搜索指数和资讯指数
  • 网站开发设计内容白度指数
  • 丽水做网站的公司seo推广教学
  • 全国做网站的大公司有哪些校园推广