Modern uygulamalar o kadar çeşitli özelliklere ihtiyaç duyar ki, bunları geliştirme süreci boyut ve karmaşıklık açısından büyümüştür. Yardım etmek için bir mimari tasarım deseni kullanabilirsiniz. Test edilmesi ve bakımı kolay uygulamaların oluşturulmasını desteklerler.
En popüler üç tasarım modeli MVC, MVP ve MVVM'dir. MVC, model, görünüm ve denetleyici anlamına gelirken, MVP model, görünüm ve sunum yapan kişi ve MVVM ise model, görünüm ve görünüm modeli anlamına gelir.
Mimari ve Tasarım Kalıpları
Mimari Desen
Bir mimari model, bir yazılım mimarisinin bazı önemli bileşenlerini netleştirir ve tanımlar. Bir mimari örüntü bir sistemin görüntüsünü aktarsa da, bu bir mimari değil. Aslında, belirli bir bağlamda yazılım mimarisinde yaygın olarak ortaya çıkan bir soruna genel ve yeniden kullanılabilir bir çözümdür.
Tasarım Deseni
Tasarım deseni, bir uygulama veya sistem tasarlarken sık karşılaşılan sorunları çözmek için kullanabileceğiniz resmileştirilmiş en iyi uygulamadır.
Mimari ve Tasarım Deseni Arasındaki Fark
Ortak terimle başlayalım - desen. Yazılımda bir model, devasa ve karmaşık bir yapıyı daha küçük, daha basit bileşenlere ayırmanıza izin veren yinelenen bir özelliktir. Bir problem sınıfı için genel bir çözüm oluşturmak için bu kalıbı kullanabilirsiniz.
Yazılım geliştirmenin her düzeyinde farklı araçlar kullanacaksınız. Daha küçük seviyelerde, bu araçlar tasarım kalıplarıdır. Mimari örüntüler daha büyük seviyelerde mevcuttur ve programlama paradigmaları uygulama düzeyinde.
Neden Mimari Tasarım Desenlerine İhtiyacımız Var?
Yazılım geliştirme sırasında, yaygın sorunları çözmek için mimari tasarım kalıplarını kullanabilirsiniz. İyi mimari ayrıca şunları yapmanıza yardımcı olabilir:
- Karmaşık görevleri daha basit görevlere ayırın.
- Hataları azaltın.
- Test edilebilir ve bakımı yapılabilir kodlar üretin.
Ancak mimari bir model olmadan uygulamanızın iş mantığını sürdürmede zorluklarla karşılaşabilirsiniz.
Model, Görünüm, ViewModel, Denetleyici ve Sunucu
Her bir kalıba bakmadan önce, onları oluşturan terimler şunlardır:
- modeli verileri depolar ve doğrudan veritabanıyla iletişim kurar. Model, verilerinizi ve uygulama mantığınızı temsil eden kısımdır. Veri işlemeyi, değiştirmeyi veya işlemeyi yöneten iş kurallarını tanımlar.
- görüş modelin verilerini görüntüler ve verilerin kullanıcı arayüzünde gösterilmesinden sorumludur.
- GörünümModeli MVVM modeline özeldir. Bu, görünüm katmanının bir soyutlamasıdır ve ayrıca model verileri için bir sarmalayıcı görevi görür.
- Denetleyici görünüm ve modeli bütünleştiren bileşendir.
- sunucu yalnızca MVP modelinde bulunan bir bileşendir. Sunucu, görünüm bileşeninden girdi alır ve verileri model yardımıyla işler.
MVC, MVP ve MVVM Modelleri
Model-Görünüm-Denetleyici Modeli
bu MVC mimari deseni ilkiydi ve bugün web uygulamaları alanında popüler. 1970'lerde tanıtıldı. Bu model, Separation of Concerns (SoC) etrafında bir uygulama oluşturmanıza olanak tanır. Uygulamanızı test etmek, sürdürmek ve geliştirmek için ihtiyaç duyduğunuz çabayı kolaylaştırır.
MVC modelinde, modelin görünümü veya denetleyiciyi anlaması yoktur. Modelin gözlemcisi, görünümde ve denetleyicide bir değişiklik olduğunda bir uyarı alır. Kontrolör, modeli ilgili görünüme bağlamak için yönlendirme sürecine yardımcı olur.
MVC modelinin avantajlarından bazıları şunlardır:
- Endişelerin ayrılması (daha odaklı).
- Kodu test etmeyi ve yönetmeyi kolaylaştırır.
- Uygulamanın katmanlarının ayrıştırılmasını destekler.
- Daha iyi kod organizasyonu ve yeniden kullanılabilirlik.
MVC şu şekilde çalışır:
SoC sayesinde MVC, kod boyutunu küçültebilir ve temiz ve yönetilebilir iyi bir kod oluşturabilir.
Model-Görünüm-Sunucu Kalıbı
MVP modeli, MVC ile iki bileşeni paylaşır: model ve görünüm. Denetleyiciyi sunucuyla değiştirir. Sunucu - adından da anlaşılacağı gibi - bir şeyi sunmak için kullanılır. Görünümü daha kolay alay etmenizi sağlar.
MVP'de, sunum yapan kişi "aracı" işlevine sahiptir, çünkü tüm sunum mantığı buna itilir. MVP'deki görünüm ve sunucu da birbirinden bağımsızdır ve bir arayüz aracılığıyla etkileşime girer.
MVP modelinin nasıl çalıştığına dair bir örnek:
Sunucu, görünüm aracılığıyla kullanıcıdan girdi alır. Daha sonra model yardımıyla kullanıcının eylemlerini işler ve sonuçları tekrar görünüme geçirir. Sunucu, arayüzler aracılığıyla görünümle iletişim kurar.
Model-Görünüm-GörünümModel Kalıbı
MVVM, MVC'nin modern evrimidir. MVVM'nin temel amacı, etki alanı mantığı ve sunum katmanı arasında net bir ayrım sağlamaktır. MVVM, görünüm ve görünüm modeli arasında iki yönlü veri bağlamayı destekler.
MVVM modeli, kodunuzun görünümünü ve modelini ayırmanıza olanak tanır. Bu, model değiştiğinde görünümün gerekli olmadığı ve bunun tersi anlamına gelir. Bir görünüm modeli kullanarak, görünümünüzü dahil etmeden birim testi yapabilir ve mantık davranışınızı test edebilirsiniz.
İşte MVVM'nin nasıl çalıştığına dair bir örnek:
MVC, MVP ve MVVM Ne Zaman Kullanılır?
Artık her bir kalıbı öğrendiğinize göre, bunları ne zaman kullanacağınızı öğrenin.
MVC Ne Zaman Kullanılır?
MVC basitçe Separation of Endişelerin bir uygulamasıdır. Uygulamanızın verileri (model), veri sıkıştırmayı (denetleyici) ve veri sunumunu (görünüm) ayırması gerekiyorsa, MVC iyi çalışacaktır. MVC, veri kaynağının ve/veya veri sunumunun herhangi bir zamanda değişebileceği bir uygulamada da iyi hizmet verir.
MVP Ne Zaman Kullanılır?
Uygulamanız çift yönlü bir akışa sahip olduğunda MVP'yi kullanabilirsiniz. Kullanıcı etkileşimlerinin modelden bir şey istemesi gerekiyorsa ve bu isteğin sonucu kullanıcı arayüzünü hemen değiştirecekse, MVP'yi düşünün.
MVVM Ne Zaman Kullanılır?
MVVM'yi şu durumlarda kullanmak isteyeceksiniz:
- Bir projeyi bir tasarımcı ile paylaşmanız gerekir ve tasarım ve geliştirme çalışmaları bağımsız olarak gerçekleşebilir.
- Çözümleriniz için birim testine ihtiyacınız var.
- Kuruluşunuzdaki projelerin hem içinde hem de genelinde yeniden kullanılabilir bileşenlere sahip olmanız gerekir.
- Kod tabanındaki diğer mantığı yeniden düzenlemek zorunda kalmadan görünümlerinizi değiştirmek için daha fazla esneklik istiyorsunuz.
Hangi Deseni Seçmelisiniz?
Bir tasarım deseni kullanmanın ana nedeni karmaşıklığı azaltmaktır. Bunu, genel karmaşıklığı azaltarak veya tanıdık olmayan karmaşıklığı tanıdık olanla değiştirerek yapabilirsiniz. Bir tasarım deseni bu iki yoldan biriyle karmaşıklığı azaltamıyorsa, hiçbirini kullanmayın; herhangi bir değer katmayacaktır.
Bir tasarım deseni kullanmanız gerektiğinden gerçekten eminseniz, bir kontrol listesi oluşturmaya çalışın. Burada gördüğünüz durumlara dayandırın ve projeniz için en uygun olanı seçin.