fikretyn
Üye
Model-View-Controller (MVC) mimarisi, yazılım geliştirmede kullanılan bir tasarım deseni olup, uygulamanın üç ana bileşene ayrılmasını sağlar: Model, View (Görünüm) ve Controller (Kontrolcü). Bu yapı, kodun daha düzenli, okunabilir ve bakımının kolay olmasını sağlar.
MVC'nin Temel Bileşenleri
- Model:
- Tanım: Uygulamanın veri ve iş mantığını temsil eder. Model, verilerin nasıl depolandığını, işlendiğini ve manipüle edildiğini tanımlar.
- Görevler: Veri tabanı işlemleri, veri doğrulama, iş kuralları.
- Örnek: Kullanıcı bilgilerini tutan bir User sınıfı veya veritabanıyla etkileşime geçen bir ORM (Object-Relational Mapping) katmanı.
- View (Görünüm):
- Tanım: Kullanıcıya verilerin nasıl sunulduğunu belirler. Görünümler, kullanıcı arayüzünü temsil eder.
- Görevler: Verilerin görsel sunumu, kullanıcıya bilgi gösterimi.
- Örnek: HTML, CSS ile stil verilmiş bir web sayfası veya kullanıcıya veri gösteren bir mobil uygulama ekranı.
- Controller (Kontrolcü):
- Tanım: Kullanıcıdan gelen girdileri işler ve uygun Model ve View bileşenlerini çağırır. Controller, kullanıcı etkileşimlerini yöneten ve iş mantığını koordine eden katmandır.
- Görevler: Kullanıcı isteklerini işleme, uygun Model metodlarını çağırma ve veriyi Görünüme gönderme.
- Örnek: Bir formun gönderilmesi sonrası veriyi işleyen ve sonuçları kullanıcıya gösteren bir kontrolcü metodu.
MVC Akış Süreci
- Kullanıcı Etkileşimi: Kullanıcı bir eylem gerçekleştirir (örneğin, bir düğmeye tıklar veya bir form gönderir).
- Controller: Kullanıcı eylemi kontrolcüye iletilir. Kontrolcü, bu eylemi işler ve gerekirse modeli günceller.
- Model: Model, iş mantığını çalıştırır ve veriyi günceller. Gerekirse veritabanı işlemleri yapar.
- View: Modelden gelen güncellenmiş veriler, kontrolcü tarafından uygun görünüme iletilir.
- Görünüm Güncellemesi: Görünüm, modelden gelen verilerle güncellenir ve kullanıcıya yeni veri sunulur.
MVC'nin Avantajları
- Kodun Ayrılması: İş mantığı, kullanıcı arayüzü ve kontrol mantığı birbirinden ayrılarak, her katmanın bağımsız olarak geliştirilip test edilebilmesini sağlar.
- Bakım Kolaylığı: Her bileşen kendi sorumluluk alanına sahip olduğu için, kodun okunabilirliği ve bakımı kolaylaşır.
- Yeniden Kullanılabilirlik: Bileşenlerin modüler yapısı, farklı projelerde yeniden kullanılabilirlik sağlar.
- Test Edilebilirlik: Ayrı bileşenler bağımsız olarak test edilebilir, bu da yazılımın genel kalitesini artırır.
Örnek Kullanım Senaryosu
Bir web uygulaması üzerinden örnek verelim:- Model: User sınıfı, kullanıcı bilgilerini tutar ve veri tabanı işlemlerini gerçekleştirir.
- View: user_profile.html dosyası, kullanıcının profil bilgilerini gösterir.
- Controller: UserController sınıfı, kullanıcıdan gelen istekleri işler, gerekli User model metodlarını çağırır ve user_profile.html görünümüne veri gönderir.