为什么要定义接口这一层,约束的是什么? 为什么不能直接定义实体进行操作?

来源:6-2 订单管理功能开发---repository开发(上)

NiRoa

2019-07-09

type IProduct interface {
//连接数据
Conn()(error)
Insert(*datamodels.Product)(int64,error)
Delete(int64) bool
Update(*datamodels.Product) error
SelectByKey(int64)(*datamodels.Product,error)
SelectAll()([]*datamodels.Product,error)
}

type ProductManager struct {
table string
mysqlConn *sql.DB
}

写回答

2回答

不吃洋葱的小胡子大叔

2023-01-13

目前看到这里, 我理解的是: 

1. 使用接口对上一层只暴露了接口的方法, 无需暴露接口内部的实例和其他属性和各种方法.  对上一层调用方比较友好简洁.  对其他人来说, 这样就避免了实例里乱七八糟的方法暴露出来一个个进行查看, 直接看接口里的逻辑就大概明白了.

2. 每个接口可以被不同的实例来实现, 从而实现多态. 习惯用接口编写代码, 将来的扩展性可能要好些.  比如数据库连接可以用一个接口实现, 既可以用mysql实现, 也可以用redis实现. 这样就避免了大量的代码和不同的方法名. 调用的时候直接用接口里定好的方法就可以.

0
0

Cap

2019-07-09

接口的使用在大型系统和组件中经常使用,接口作用有许多,常见的有方法限定(必须实现方法集合),多态实现,类型限定等。在开发中还可以通过接口来检测struct是否已经实现接口。在下面章节中有提到。

0
0

全流程开发 GO实战电商网站高并发秒杀系统

运用架构设计与系统化思维,从容应对不同流量等级的“秒杀”场景

1462 学习 · 443 问题

查看课程