在Jetpack Compose中使用MVP和MVVM以及它们之间的区别
MVP(Model、View、Present)和MVVM(Model、View、View Model)是两种常见的架构模式,它们都是在通过分离不同的职责来提高代码的可维护性和可扩展性,但它们在实现方式和概念上有所不同。
1、MVP
MVP应用分为三层:
- Model:负责处理数据和业务逻辑。它可以从数据库、网络、硬件设备等来获取数据,并提供给Presenter。
data class User(val name: String, val age: Int)
interface UserRepository {
fun getUser(): User
}
class UserRepositoryImpl : UserRepository {
override fun getUser(): User {
return User("Grace", 32)
}
}
- View:负责显示数据和处理用户界面。它实现了UI元素的渲染,但不直接处理逻辑。
interface UserView {
fun displayUser(user: User)
}
class MvpActivity : ComponentActivity(), UserView {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
val presenter = UserPresenter(this, UserRepositoryImpl())
presenter.loadUser()
}
override fun displayUser(user