mis*_*ope 4 enums delegates kotlin
这是一个关于以最小的样板找到漂亮的设计方法的抽象问题。
先决条件:
enum class Provider { Google, Microsoft }interface Foo { fun getMail(): Mail },将为每个特定的提供程序实现。我很好奇是否有一种方法可以定义ENUM类Provider,以实现接口,Foo而我以后可以指定每个具体提供者将通过哪些对象实现?
我想知道是否有没有样板的方法来定义具体接口的枚举类,而我以后可以定义将通过哪些对象实现具体提供者。
先决条件并不牢固,因此,如果一个更好的设计需要更改,那么我渴望一个更好的建议。
是的
您可以使枚举实现接口。
enum class Provider(val mail: Mail) : Foo {
Google(googleMail),
Microsoft(microsoftMail);
override fun getMail(): Mail = mail // Or this.mail
}
interface Foo { fun getMail(): Mail }
Run Code Online (Sandbox Code Playgroud)
然后您访问
Provider.Google.getMail()
Run Code Online (Sandbox Code Playgroud)
其他方法是使用val成员
interface Foo { val mail: Mail }
enum class Provider(override val mail: Mail) : Foo {
Google(googleMail),
Microsoft(microsoftMail)
}
Run Code Online (Sandbox Code Playgroud)
和访问
Provider.Google.mail
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |