Bir Design Pattern olan Model View Controller ile dosyaları, sınıfları ve objeleri nasıl organize edeceğinizi öğreneceksiniz.
MVC, yani Model-View-Controller, Bir uygulamayı birbirine bağlı üç parçaya ayıran ve kullanıcı arayüzleri geliştirmek için yaygın olarak kullanılan bir Design Pattern’dır.
Design pattern’ler, deneyimli object oriented (obje tabanlı) yazılım geliştiricileri tarafından tasarlanmış en iyi yöntemlerin bazılarını temsil etmek için kullanılır. Bir design pattern, nesne yönelimli sistemlerde sıklıkla karşılaşılan belirli yazılımsal tasarım sorunlarını ele alır ve açıklar. Problemi, çözümü, çözümün ne zaman uygulanacağı ve sonuçlarını açıklar. Ayrıca uygulanması konusunda ipuçları ve örnekler verir. Çok amaca yönelik tasarlanmış yüzlerce design pattern vardır ve MVC de bunların en sıklıkla kullanılanlarından biridir.
Model, proje içerisinde kullanılacak olan verilerinizin bulunduğu yerdir. Günlük hayattaki somut nesnelerin, yazılım ortamında modellenmesi anlamına gelir. Örneğin; bir kütüphane yazılımı geliştirmek istediğimizde kitap bilgilerinin tutulacağı bir Kitap modeline ihtiyaç duyarız. Bu modelde kitabın seri numarası, adı, yazarı ve yayınevi gibi bilgileri yer alacaktır.
Örnekler: Kullanıcı, Araba, Paylaşım (Instagram, Facebook vb.)
View’lar, projede bulunan arayüz elemanlarıdır. Bu bir web sayfası, masaüstü uygulaması arayüzü veya mobil uygulama tasarımı olabilir. Örneğin; UILabel, metni ekranda sunan bir arayüz elemanıdır ve kolayca yeniden kullanılabilir. Her projenin ihtiyaçlarına göre arayüz elemanları değişebilir.
Örnekler: UIButton, UIImageView, UIStackView
Projedeki tüm işlemlerin (veritabanı işlemleri, hesaplamalar, veri aktarımı v.b) yapıldığı kontrol bölümüdür. Controller ayrıca model ve view arasındaki veri akışını da kontrol eder.
Örnek Sayfalar: Profil, Ayarlar, TelefonRehberi
MVC, Günümüzde en çok kullanılan pattern’lardan biridir. Kullandığınız çoğu uygulama MVC kullanır. Geliştiriciler açısından okunması kolay kodlar yazmak ve geliştirilen yazılımın modüler bir yapıya sahip olmasını sağlamak en temel amaçlardır.
Bir projenin MVC alt yapısına uygun olarak geliştirilmesi, ileride ona eklenecek özellikler için harcanacak zamanı azaltır ve süreci kolaylaştırır. Ayrıca ortaya çıkması muhtemel bug’ların(hata) çözümlenmesinde son derece kolaylık sağlar. Kodun farklı bölümlerinde aynı anda değişiklikler yapılmasını sağlar.
Model kısmı verilerinizin tutulduğu yerdir. Örneğin; Kullanıcı adında bir model. View kısmı verinin işlendikten sonra kullanıcıya gösterildiği arayüz elemanıdır. Örneğin; UILabel ile modelinizden gelen bir yazıyı ekranda gösterebilirsiniz. Controller ise verinin işlendiği ve model — view arasındaki iletişimin sağlandığı sayfadır. Örneğin; iOS’in Ayarlar sayfası.
Örnek bir Instagram Senaryosu
Projedeki MVC katmanları birbirinden farklı olduğu için geliştiriciler eş zamanlı çalışabilir. Ayrıca bu katmanların bir araya gelmesi oldukça zahmetsizdir.
Bir yazılım projesinde yeniden kullanılabilirlik son derece önemli bir ölçüttür. Oluşturacağınız modeller, view’lar ve controller’lar projenizin her bir noktasında yeniden kullanılabilir bir yapı oluşturur.
Özellikle Web projelerinde ViewState kavramı birçok verinin aynı anda işlenmesi ve depolanması gereken durumlarda performans kayıplarına neden olmaktadır. MVC projelerinde Viewstate kavramından kaynaklı performans kayıpları meydana gelmez.
struct Kullanici {
var ad: String
var soyad: String
var yas: Int
}
class BegenButonu: UIButton {
// Değişkenler
var begeniSayisi = 0
var begenenKullanici: Kullanıcı
// Fonksiyonlar
func gonderiyiBegen(kullanici: Kullanici) { }
}
class KullaniciListesi: UIViewController {
// Araüz Elemanları (View)
@IBOutlet weak var baslikLabel: UILabel
@IBOutlet weak var fotografImageView: UIImageView
// Değişkenler
var kullanici: Kullanici
// Fonksiyonlar
override func viewDidLoad() {
super.viewDidLoad()
}
}