Design Pattern & MVVM İle Yukarılara Uçuş — Part 1
Design Pattern Nedir ? MVVM Nasıl Kullanılır ?
Herkese merhabalar! Ben Samet. Umarım gününüz güzel geçiyordur.
Bu yazı serisinde size bir projeye başlarken çok temelden ihtiyacınız olacak kolay ve efektif bir mimari yapıyı ve bu yapıyla beraber durum yönetiminin nasıl yapabileceğini göstereceğim.
Sırasıyla problemi analiz edip, bu problem doğrultusunda ihitiyaçlarımıza yönelik çözümleri kavrayıp bu çözümlerin koda dökülmesine kadar olan adımları beraber izleyeceğiz.
4 tane alt makale olarak izleyeceğimiz bu seride akla gelebilecek birçok soruyu yanıtlamaya çalışacağım. O zaman haydi başlayalım.
Alt Başlıklar
- Part 1 — Design Pattern Nedir ? MVVM Nasıl Kullanılır ?
- Part 2 — Dependency Injection Nedir ? GetIt Nasıl Kullanılır ?
- Part 3 — State Management Nedir ? MobX Nasıl Kullanılır ?
- Part 4 — Gelin Bir Örnek Yapalım.
İçerik
- Problem Tanımı
- Design Pattern Kavramı
- MVVM Kavramı
- Kaynakça
- Kapanış
Problem Tanımı
Yeni bir projeye başlayınca, bazı kurallar dahilinde ilerlemeye dikkat etmeliyiz. Bu kurallar projenin daha anlaşılabilir, yeniden kullanılabilir ve sürdürülebilir olmasını sağlar.
İlk aşamada design pattern devreye giriyor. Birçok alternatif pattern arasından seçilen birini kullanmak hem üsttekileri kapsar hem de kod yazmamız için bize kolaylık sağlar.
Ayrıca bu problemlere karşılık gelen çözümler birbirinden farklı olabilir veya hiçbir kütüphane kullanılmadan da üstesinden gelinebilir.
Design Pattern Kavramı
Türkçesi “Tasarım Deseni” olan Design Pattern kavramı, kod yazarken ortaya çıkan yaygın sorunları çözmeyi sağlar. Sınıflar ile nesneler arası ilişkileri ve etkileşimleri görmeye olanak tanır.
Tasarım desenleri kullanarak kod;
- Daha esnek
- Yeniden kullanılabilir
- Bakımı yapılabilir
hale getirilir.
Tasarım kalıpları, proje geliştirme amaçlı olmayıp ortak problem çözme amacı ile ortaya çıkmıştır. Her proje için aynı deseni kullanmaktan çok amaca yönelik olarak seçip kullanılmalıdır.
Ana olarak 3 tür tasarım kalıbı vardır;
1— Creational (Yaratışsal):
Kalıtım ile sınıf soyutlaştırma veya yetkilendirerek nesne oluşturma yapılır. Örnek olarak; Factory Method, Abstract Factory, Builder, Singleton, Object Pool, ve Prototype.
2 — Structural (Yapısal):
Yapıyı büyütmek ve yeni fonksiyonlar sağlamak için kullanılır. Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Private Class Data, ve Proxy’yi buna örnek olarak gösterebiliriz.
3 — Behavioral (Davranışsal):
Nesnelerin kendi aralarındaki iletişimini belirlemeyi ve yönetmeyi temel alır. Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Null Object, Observer, State, Strategy, Template method, Visitor gibi çeşitleri vardır.
MVVM Kavramı
Model-View-View Model; View Modeli kullanarak arayüz nesneleri (view) ile iş mantığını (model) birbirinden ayırmaya yardımcı olan bir davranışsal tasarım desenidir.
Mvvm kullanmanın avantajları;
- Kodunuz kolay test edilebilir olacaktır.
- Kodunuz daha çok parçalanabilir hale gelecektir (en büyük avantaj).
- Projenin bakımı kolaydır.
- Ekip çalımasına yatkın biçimde olup yeni özellikleri hızlı eklemeyi sağlar.
Model: Veri kaynaklarının tanımlanması bu katman tarafından gerçekleştirilir.
View: Verileri almak ve depolamak için model ve view model birlikte çalışır. View model, view aracılığıyla kullanıcının etkinliğinden haberdar edilir. Bu katman sadece view modeli izler ve içinde herhangi bir uygulama mantığı bulundurmaz.
View Model: Görünümün veri akışlarını ortaya çıkarır. Aynı zamanda model ve view arasında bir bağlantı görevi görür.
MVVM Olay Akışı
1 — Viewda bir olay gerçekleşir.
2 — Bu olay view model tarafından algılanıp modeldeki veriye yazar.
3— Model, view model tarafından okunur.
4 — Okunan veri datası view’a gönderilir.
Kaynaklar
Görsel Kaynakları
https://miro.medium.com/max/1280/0*LDnwNiY6CBEs275n.png
https://media.geeksforgeeks.org/wp-content/uploads/20201002215007/MVVMSchema.png
İçerik Kaynakları
https://www.geeksforgeeks.org/design-patterns-set-1-introduction/
https://www.geeksforgeeks.org/mvvm-model-view-viewmodel-architecture-pattern-in-android/?ref=gcse
https://dev.to/noureldinshobier/intro-to-mvvm-architecture-in-flutter-using-pmvvm-package-420a
Kapanış
Yazının sonuna kadar geldiğimiz için çok teşekkürler. Umarım keyif almışsınızdır. Aşağıdaki kanallardan beni takip etmeyi ve destek olmayı unutmayın.
Twitter: https://twitter.com/sametcilingirrr
Linkedin: https://www.linkedin.com/in/sametcilingir/
Ve ayrıca…
When you help someone, you help everyone.