Model-Görünüm-GörünümModel (MVVM)
Model-View-ViewModel (MVVM), iOS geliştirmede çok fazla popülerlik kazanan bir mimari tasarım modelidir. iOS geliştirmede uzun süredir kullanılan popüler Model-View-Controller (MVC) modelinin bir türevidir. MVVM, endişeleri ayırmanın ve daha iyi kod okunabilirliği ve bakım kolaylığı elde etmenin harika bir yoludur. Bu yazıda MVVM modelini ve bunun Swift'te nasıl uygulanabileceğini tartışacağız.
MVVM nedir?
MVVM deseni, kullanıcı arabirimiyle ilgili endişeleri iş mantığından ayıran bir mimari tasarım modelidir. Veri sunum katmanı ile iş mantığı katmanı arasında net bir ayrım sağlar. Bu ayırma, daha iyi kod okunabilirliği, sürdürülebilirlik ve test edilebilirlik sağlar.
MVVM deseni üç bileşenden oluşur: model, görünüm ve görünüm modeli. Model verileri temsil eder, görünüm kullanıcı arayüzünü temsil eder ve görünüm modeli ikisi arasındaki aracıdır.
modeli:
Model, uygulamadaki verilerden sorumludur. Veritabanı, ağ hizmeti veya dosya gibi çeşitli kaynaklardan gelebilen verilerin bir soyutlamasıdır. Model ayrıca veri doğrulama ve iş mantığından da sorumludur. Herhangi bir kullanıcı arayüzü veya sunum mantığı içermemelidir.
Görüş:
Görünüm, verileri kullanıcıya sunmaktan sorumludur. Uygulamanın kullanıcı arayüzü bileşenidir. Görünüm herhangi bir iş mantığı veya veri doğrulama içermemelidir. Verileri yalnızca görsel olarak çekici bir şekilde sunmalıdır.
Modeli Görüntüle:
Görünüm modeli, model ile görünüm arasındaki aracıdır. Görünümdeki sunum için verileri hazırlamaktan sorumludur. Görünüm modeli ayrıca kullanıcı girişinin işlenmesinden ve gerektiğinde modelin güncellenmesinden de sorumludur. Herhangi bir kullanıcı arayüzü veya sunum mantığı içermemelidir.
MVVM'yi Swift'de uygulamak:
MVVM'yi Swift'te uygulamak için aşağıdaki adımları kullanacağız:
modeli oluştur
MVVM'yi uygulamanın ilk adımı, modeli oluşturmaktır. Model, uygulamadaki verileri temsil eden basit bir veri yapısı olmalıdır. Yalnızca verilerle etkileşime geçmek için gerekli özellikleri ve yöntemleri içermelidir.
İşte bir model örneği:
struct User {
let name: String
let email: String
let age: Int
}
MVVM'yi uygulamanın ikinci adımı, görünümü oluşturmaktır. Görünüm, modelden ve görünüm modelinden ayrı bir bileşen olmalıdır. Yalnızca kullanıcı arayüzü kodunu içermeli ve herhangi bir iş mantığı veya veri doğrulama içermemelidir.
İşte bir görünüm örneği:
import UIKit
class UserView: UIView {
let nameLabel = UILabel()
let emailLabel = UILabel()
let ageLabel = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
setupSubviews()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupSubviews()
}
private func setupSubviews() {
// add subviews to the view
addSubview(nameLabel)
addSubview(emailLabel)
addSubview(ageLabel)
}
func configure(with user: User) {
nameLabel.text = user.name
emailLabel.text = user.email
ageLabel.text = "\(user.age)"
}
}
MVVM'yi uygulamanın üçüncü adımı, görünüm modelini oluşturmaktır. Görünüm modeli, model ve görünümden ayrı bir bileşen olmalıdır. Sadece iş mantığı ve sunum mantığı içermelidir. Görünüm modeli, verileri görünümde sunulmak üzere hazırlamak için modelle etkileşime girmelidir.
İşte bir görünüm modeli örneği:
class UserViewModel {
init(user: User) {
self.user = user
}
func configure(view: UserView) {
view.configure(with: user)
}
}
MVVM'yi uygulamadaki son adım, görünüm modelini ve görünümü bağlamaktır. Bu, bağımlılık enjeksiyonu kullanılarak veya görünüm denetleyicisinde görünüm modeli oluşturulup görünüme geçirilerek yapılabilir. Görünüm modeli ile görünümün nasıl bağlanacağına ilişkin bir örnek aşağıda verilmiştir:
class UserViewController: UIViewController {
let userView = UserView()
let userViewModel: UserViewModel
init(user: User) {
self.userViewModel = UserViewModel(user: user)
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
userViewModel.configure(view: userView)
view.addSubview(userView)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
userView.frame = view.bounds
}
}
Çözüm
MVVM modeli, endişeleri ayırmanın ve iOS geliştirmede daha iyi kod okunabilirliği, bakım kolaylığı ve test edilebilirlik elde etmenin harika bir yoludur. Kullanıcı arayüzünü iş mantığından ve verilerden ayırarak daha modüler ve yeniden kullanılabilir kodlar oluşturabiliriz. Swift, nesne yönelimli programlama ve işlevsel programlama desteği nedeniyle MVVM modelini uygulamak için harika bir dil sağlar. MVVM'yi Swift'te uygulayarak geliştirmesi, sürdürmesi ve test etmesi daha kolay harika iOS uygulamaları oluşturabiliriz.

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































