Middle
MVP (Model-View-Presenter) deseneminden daha detaylı bahsedebilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
MVP, uygulamayı üç etkileşimli bileşene ayırır:
- Model: Uygulama verilerini ve iş mantığını yönetir. Kullanıcı arayüzüne bağlı değildir.
- View: Verileri kullanıcıya gösterir ve girişlerini işler. Pasif olup karar verme mantığı içermez.
- Presenter: Model ve View arasında aracı görevi görür. Model'den veri alır ve View için biçimlendirir. View olaylarına yanıt verir ve Model'i günceller. View, Presenter'a, Presenter ise View'a bir arayüz aracılığıyla referans verir.
MVP'nin avantajları:
- UI değişikliklerine dayanıklılık: Mantık Presenter'da bulunur ve belirli bir View uygulamasına bağlı değildir.
- Test edilebilirlik: Presenter, UI'yi taklit etmeden izole şekilde test edilebilir.
- Sorumlulukların ayrılması: Bileşenler arasındaki net rol ayrımı, kodun bakımını kolaylaştırır.
Örnek:
// View Arayüzü
interface MainView {
fun showData(data: String)
fun showError(message: String)
}
// Presenter
class MainPresenter(private val view: MainView, private val model: MainModel) {
fun loadData() {
val data = model.getData()
if (data != null) {
view.showData(data)
} else {
view.showError("Veri yüklenemedi")
}
}
}
// Model
class MainModel {
fun getData(): String? {
// Veri yükleme
return "Örnek Veri"
}
}
// Aktivite (View Uygulaması)
class MainActivity : AppCompatActivity(), MainView {
private lateinit var presenter: MainPresenter
private lateinit var textView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textView = findViewById(R.id.textView)
val model = MainModel()
presenter = MainPresenter(this, model)
presenter.loadData()
}
override fun showData(data: String) {
textView.text = data
}
override fun showError(message: String) {
textView.text = message
}
}