在多个Consumer场景中,我们应该在哪里定义Go接口?生产者中显示通用性的界面如何?

时间:2018-11-19 19:52:04

标签: go interface dependencies solid-principles dependency-inversion

有人可以给我具体的例子吗?

https://github.com/golang/go/wiki/CodeReviewComments#interfaces

这就是我的遵循方式吗?

package worker

type interface DB {
  getAllTable()
}


type worker struct {
  db DB
}

func (w worker) doSomething() {
  w.db.getAllTable() 
}

package listener

type interface DB {
  getAllTable()
}

type listener struct {
  db DB
}

func (l listener) doSomething() {
  l.db.getAllTable() 
}

package msql

type mysql struct {}

func (mysql) getAllTable() {
}

是否可以在2个地方重复这些界面以满足“定义消费对象”?


使用界面显示一般性怎么样?它是定义界面,而不是在何处使用

例如实现hash.Hash32的hash / crc32和hash / adler32

1 个答案:

答案 0 :(得分:0)

您可以将DB界面移到另一个包中,然后workerlistener包都可以使用它。