共享业务逻辑
在 iOS 和 Android 之间复用
共享业务逻辑 是 CoddyKit 上的免费 Kotlin Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Kotlin Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Kotlin Academy 课程共包含 4 节课。
为什么要共享业务逻辑
用户界面因平台而异,但验证、定价和数据流等规则是相同的。将它们放在 commonMain 中共享,可以消除重复代码和错误。
共享数据模型
在公共代码中只需定义一次领域模型。借助 kotlinx.serialization,它们还可以在两个平台上以相同方式序列化。
import kotlinx.serialization.Serializable
@Serializable
data class Product(val id: Int, val name: String, val price: Double)共享用例
纯业务规则位于公共代码中,不需要任何平台 API。
class CartTotal {
fun total(items: List<Product>): Double =
items.sumOf { it.price }
}使用 Ktor 共享网络通信
Ktor 客户端支持多平台。您只需编写一次 API 层;每个平台分别提供一个 HTTP 引擎。
import io.ktor.client.HttpClient
class Api(private val client: HttpClient) {
// suspend fun products(): List<Product> = client.get(...)
}共享协程
协程可以在公共代码中运行,因此异步仓储也可以共享。挂起函数会向两个平台公开。
class Repository(private val api: Api) {
suspend fun load(): List<Product> = api.products()
}仓储模式
一种常见模式是:Repository 协调网络和缓存,并提供简洁的方法。两个应用都调用同一个仓储。
共享 ViewModels
借助 Decompose 或共享的 ViewModel 等库,表示层逻辑和状态也可以共享,只保留原生渲染。
将状态公开为 Flow
使用 StateFlow 公开状态,这样 Android 可以直接收集状态,而 iOS 可以通过包装器观察状态。
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
class ProductState {
private val _items = MutableStateFlow<List<Product>>(emptyList())
val items: StateFlow<List<Product>> = _items
}挂起函数与 iOS
Kotlin 挂起函数会以完成处理程序或异步方法的形式向 Swift 公开。iOS 使用 Swift 的 async/await 调用它们。
// Swift
// let products = try await repository.load()不要在共享代码中放置用户界面
请避免共享用户界面。共享逻辑并进行原生渲染,可以在消除重复规则的同时提供最佳用户体验。
可运行的逻辑示例
共享用例就是普通的 Kotlin 代码。下面让它独立运行来计算购物车总额。
data class Product(val name: String, val price: Double)
fun total(items: List<Product>): Double = items.sumOf { it.price }
fun main() {
val cart = listOf(Product("Pen", 2.5), Product("Book", 12.0))
println("Total: " + total(cart))
}快速检查
在结构良好的 KMM 应用中,哪些内容最适合共享,哪些内容应保留为原生实现?
回顾
您可以共享逻辑层:
- 模型、用例、仓储、Ktor 网络通信和协程
- 通过
StateFlow公开状态;iOS 使用 async/await 调用挂起函数 - 将用户界面和导航保留为原生实现
下一步:访问平台 API。
常见问题解答
「共享业务逻辑」课时是免费的吗?
是的 — 「共享业务逻辑」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kotlin Academy 课程的其余内容,请升级到 CoddyKit PRO。 Kotlin Academy 课程共包含 4 节课。
「共享业务逻辑」这节课中我会学到什么?
在 iOS 和 Android 之间复用 你通过在浏览器中直接运行的动手代码来练习 Kotlin Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Kotlin Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Kotlin Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「共享业务逻辑」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Kotlin Academy 课中编写并运行代码吗?
能。每节 Kotlin Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。