分配给它一个以上功能的接口(interface)有什么问题吗?
无论我读到什么,理想情况下,一个接口(interface)应该只有一个方法(接口(interface)应该以此命名)。但是,为一个接口(interface)设置多个方法是否有任何陷阱? 例如。
type FooMgrInterface interface {
CreateFoo(hostname string, fooConfig interface{}) (uuid string, err error)
DeleteFoo(hostname string, fooID string) (err error)
CreateBar(hostname string, barID string, barConfig interface{}) (uuid string, err error)
DeleteBar(hostname string, barID string) (err error)
AttachBar(hostname string, fooID string, bars []string) (err error)
DetachBar(hostname string, barID string) (err error)
GetBars(hostname string) (bars []Bar, err error)
GetBar(hostname string, barID string) (bar Bar, err error)
GetFoo(hostname string, fooID string) (foo Foo, err error)
GetFoos(hostname string) (foos []Foo, err error)
}
如果是这样,如何简化上述界面或(可能)拆分为多个界面?
最佳答案
这没什么问题,因为语言支持得很好。
我相信作者是根据经验提供架构建议。具体来说,如果您的接口(interface)有很多方法,您可能在某处进行了错误的抽象。
你可以问自己一些澄清问题:
- 这个接口(interface)会有多少种不同的实现?
- 其中有多少会具有相同的方法实现?
- Foos/Bars 是如何附加到实现者的?以某种方式扭转它会更简单吗?例如像
NewFoo(owner FooMgrInterface) *Foo
关于使用不止一种方法进行接口(interface) - 可接受还是 Not Acceptable ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45395982/