我对golang有点陌生,我有一个关于包和接口的问题。如果我有packue1,它需要使用一个接口的实现,将来可以与其他实现交换,这可能吗?
一些伪代码
包实现包含接口的当前实现
type TestI interface {
M1()
}
package implementation
type Impl struct {}
funct (i *Impl) M1 ( ... do something )
package package1
import TestI somehow and call M1 method but with flexibility to swap it with other implementation of this interface in future?
包包1应该在不知道的情况下使用实现(就像c#或java中的DI一样,包应该只知道接口,而不知道实现)TestI接口应该在哪里定义?抱歉,如果这有点令人困惑,只是想让我的头脑绕过它。
这在 c 中是等效的#
ITest {
SetClass(Class1 cl);
}
// package1
class Class1 {
private ITest test {get; set;}
public void SomeMethod() {
// i want to somehow set this in other package
test.SetClass(this);
}
}
// package2
class Test implements ITest {
private Class1 cl;
SetClass(Class1 c) {
this.c1 = c;
}
}
SMILET
相关分类