为什么要定义接口这一层,约束的是什么? 为什么不能直接定义实体进行操作?
来源: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实现. 这样就避免了大量的代码和不同的方法名. 调用的时候直接用接口里定好的方法就可以.
00 -
Cap
2019-07-09
接口的使用在大型系统和组件中经常使用,接口作用有许多,常见的有方法限定(必须实现方法集合),多态实现,类型限定等。在开发中还可以通过接口来检测struct是否已经实现接口。在下面章节中有提到。
00
相似问题