你好,我想快速实现类似的功能
Kotlin示例:
class SessionManager(
private val freeManager: FreeManager
) : FreeManager by freeManager
{
}
在这里,FreeManager是接口,我通过构造函数传递引用,现在我可以通过freeManager编写扩展部分FreeManager,它不需要我从接口实现所有方法,我如何才能通过协议迅速实现类似的目的?
我可以做这样的事情吗?
class SessionManager : FreeManager {
init(freeManager: FreeManager) {
// assign freeManager to extended protocol instead of implementing
//all needed methods from protocol
}
}
答案 0 :(得分:2)
您可以使用 protocol
和 protocol extension
实现所需的功能。
1。。使用2种方法创建一个protocol
名称FreeManager
,
protocol FreeManager {
func method1()
func method2()
}
目前,method1()
和method2()
都必须由conforming type
实施。
2.
创建一个protocol extension
并实现要制作protocol
的{{1}}的方法,即
optional
在上面的代码中,我在extension FreeManager {
func method2() {
print("This is method2()")
}
}
中实现了method2()
。因此,对于protocol extension
,现在实现此方法是optional
。 conforming type
仍然是强制实施。
3。。使类method1()
到SessionManager
FreeManager
在上面的代码中,我仅实现了class SessionManager: FreeManager {
func method1() {
print("This is method1()")
}
}
。
答案 1 :(得分:0)
在Swift中,您可以扩展协议本身:
protocol Foo {
func bar()
}
extension Foo {
func bar() {
print("bar")
}
}
class Bar: Foo {
}
let bar = Bar()
bar.bar()