Introduction
Good architecture helps keep your app organized. It makes your code easier to grow and fix over time.
Good architecture helps keep your app organized. It makes your code easier to grow and fix over time.
interface View {
fun showData(data: String)
}
class Presenter(private val view: View) {
fun loadData() {
val data = "Hello from Presenter"
view.showData(data)
}
}interface View {
fun showMessage(message: String)
}
class Presenter(private val view: View) {
fun greetUser() {
view.showMessage("Welcome!")
}
}interface View {
fun showData(data: String)
}
class Model {
fun getData(): String = "Data from Model"
}
class Presenter(private val view: View, private val model: Model) {
fun updateView() {
val data = model.getData()
view.showData(data)
}
}This simple program shows how the Presenter sends data to the View. The View prints the data to the console.
interface View {
fun showData(data: String)
}
class ConsoleView : View {
override fun showData(data: String) {
println("View shows: $data")
}
}
class Presenter(private val view: View) {
fun loadData() {
val data = "Hello from Presenter"
view.showData(data)
}
}
fun main() {
val view = ConsoleView()
val presenter = Presenter(view)
presenter.loadData()
}Separating code into parts (like View, Presenter, Model) helps keep things clear.
Good architecture makes teamwork easier because everyone knows their role.
It also helps when you want to change one part without breaking others.
Architecture organizes your app into clear parts.
This makes your code easier to grow and fix.
It helps teams work together smoothly.
class UserViewModel(private val repo: UserRepository) {
fun loadUser(id: Int) = repo.getUser(id)
}
class FakeRepo : UserRepository {
override fun getUser(id: Int) = "User$id"
}
fun main() {
val vm = UserViewModel(FakeRepo())
println(vm.loadUser(5))
}class UserViewModel {
fun getUser(id: Int) = UserRepository().getUser(id)
}
class UserRepository {
fun getUser(id: Int) = "User$id"
}Pass the test and this pattern moves unknown