API
一个 API 的基本表示类型,代表可通过当前 API 发起请求并最终得到一个结果。 API 的基本实现应当为不可变类型,其内在不应持有可变状态。
实现建议
工厂构建
建议 API 的所有具体实现类都应隐藏自身的主构造,并通过提供 create
系命名的工厂方法来代替构建。
public class FooAPI private constructor(val bar: Bar) : API<Requestor, Foo> {
override suspend fun requestBy(requestor: Requestor): Foo {
// ...
}
public companion object Factory {
@JvmStatic
public fun create(bar: Bar): FooAPI {
return FooAPI(bar)
}
}
}
Content copied to clipboard
单例和可预测分支
尽管如此,但是如果某个 API 实现可以设计为单例或多个不变的具体状态,则可以直接通过 object
等方式实现。
public object SingletonAPI : API<Requestor, Bar> {
override suspend fun requestBy(requestor: Requestor): Bar {
// ...
}
}
Content copied to clipboard
public class SimpleAPI private constructor(private val value: Int) : API<Requestor, SimpleResult> {
override suspend fun requestBy(requestor: Requestor): SimpleResult {
// ...
}
public companion object Factory {
@JvmField public val FIRST: SimpleAPI = SimpleAPI(Int.MIN_VALUE)
@JvmField public val LAST: SimpleAPI = SimpleAPI(Int.MAX_VALUE)
@JvmStatic
public fun create(value: Int): SimpleAPI {
return when (value) {
Int.MIN_VALUE -> FIRST
Int.MAX_VALUE -> LAST
else -> SimpleAPI(value)
}
}
}
}
Content copied to clipboard
Author
ForteScarlet