Tasarım Desenleri (Design Patterns) ve Kullanım Alanları
Tasarım Desenleri (Design Patterns) ve Kullanım Alanları. Yazılım mühendisliğinde Tasarım Deseni, yazılım tasarımında yaygın olarak ortaya çıkan bir soruna yönelik genel, tekrarlanabilir bir çözümdür.
Tasarım Desenlerinin Kullanım Alanları
Tasarım Deseni (Design Patterns), doğrudan koda dönüştürülebilecek tamamlanmış bir tasarım değildir. Birçok farklı durumda kullanılabilecek bir problemin nasıl çözüleceğine ilişkin bir açıklama veya şablondur.
Tasarım Modelleri, test edilmiş, kanıtlanmış geliştirme paradigmaları sağlayarak geliştirme sürecini hızlandırabilir. Etkili yazılım tasarımı, uygulamanın ilerleyen aşamalarına kadar görünür hale gelmeyecek sorunların dikkate alınmasını gerektirir.
Tasarım desenlerinin yeniden kullanılması, büyük sorunlara neden olabilecek ince sorunların önlenmesine yardımcı olur ve kalıplara aşina olan kodlayıcılar ve mimarlar için kodun okunabilirliğini artırır. Çoğu zaman insanlar yalnızca belirli yazılım tasarım tekniklerinin belirli sorunlara nasıl uygulanacağını anlarlar.
Bu tekniklerin daha geniş bir problem yelpazesine uygulanması zordur. Tasarım kalıpları, belirli bir soruna bağlı ayrıntıları gerektirmeyen bir formatta belgelenen genel çözümler sunar. Ayrıca kalıplar, geliştiricilerin yazılım etkileşimleri için iyi bilinen, iyi anlaşılan adlar kullanarak iletişim kurmasına olanak tanır. Yaygın tasarım modelleri zaman içinde geliştirilebilir ve bu da onları geçici tasarımlardan daha sağlam hale getirir.
Yaratıcı Tasarım Desenleri
Bu tasarım desenlerinin tamamı sınıf örneklemesiyle ilgilidir. Bu model ayrıca sınıf oluşturma kalıplarına ve nesne yaratma kalıplarına bölünebilir. Sınıf oluşturma kalıpları örnekleme sürecinde kalıtımı etkili bir şekilde kullanırken, nesne oluşturma kalıpları işin yapılması için delegasyonu etkili bir şekilde kullanır.
- Soyut Fabrika
Birkaç sınıf ailesinin bir örneğini oluşturur - Oluşturucu
Nesne yapımını temsilinden ayırır - Fabrika Yöntemi
Çeşitli türetilmiş sınıfların bir örneğini oluşturur - Nesne Havuzu
Artık kullanılmayan nesneleri geri dönüştürerek pahalı kaynak edinimi ve serbest bırakılmasından kaçının - Prototip
Kopyalanacak veya klonlanacak, tamamen başlatılmış bir örnek - Singleton
Yalnızca tek bir örneğinin bulunabileceği bir sınıf
Yapısal Tasarım Desenleri
Bu tasarım desenlerinin tamamı Sınıf ve Nesne kompozisyonuyla ilgilidir. Yapısal sınıf oluşturma kalıpları, arayüzleri oluşturmak için kalıtımı kullanır. Yapısal nesne desenleri, yeni işlevsellik elde etmek için nesneleri oluşturmanın yollarını tanımlar.
- Köprü
Bir nesnenin arayüzünü uygulamasından ayırır - Bileşik
Basit ve bileşik nesnelerden oluşan bir ağaç yapısı - Dekoratör
Nesnelere dinamik olarak sorumluluklar ekleyin - Cephe
Bir alt sistemin tamamını temsil eden tek bir sınıf - Flyweight
Verimli paylaşım için kullanılan ince taneli bir örnek - Özel Sınıf Verileri
Erişimci/mutatör erişimini kısıtlar - Proxy
Başka bir nesneyi temsil eden bir nesne
Davranışsal Tasarım Kalıpları
Bu tasarım kalıplarının tamamı Class’ın nesnelerin iletişimiyle ilgilidir. Davranış kalıpları, özellikle nesneler arasındaki iletişimle ilgili olan kalıplardır.
- Sorumluluk zinciri
Bir nesne zinciri arasında bir isteği iletmenin bir yolu - Komut
Bir komut isteğini nesne olarak kapsülleme - Tercüman
Bir programa dil öğelerini dahil etmenin bir yolu - Yineleyici
Bir koleksiyonun öğelerine sırayla erişme - Arabulucu
Sınıflar arasındaki basitleştirilmiş iletişimi tanımlar - Memento
Bir nesnenin iç durumunu yakalayın ve geri yükleyin - Boş Nesne
Bir nesnenin varsayılan değeri olarak hareket edecek şekilde tasarlanmıştır - Gözlemci
Bir dizi sınıftaki değişikliği bildirmenin bir yolu - Durum
Bir nesnenin durumu değiştiğinde davranışını değiştirin - Strateji
Bir sınıf içindeki bir algoritmayı kapsüller - Şablon yöntemi
Bir algoritmanın tam adımlarını bir alt sınıfa erteleyin - Ziyaretçi
Bir sınıfa değişiklik yapmadan yeni bir işlem tanımlar
“Diğer Soyutlamalardan Önemli Bir Farkı Yoktur”
Bazı yazarlar tasarım kalıplarının diğer soyutlama biçimlerinden önemli ölçüde farklı olmadığını ve programlama alanındaki mevcut olguları tanımlamak için (mimarlık camiasından ödünç alınan) yeni terminolojinin kullanılmasının gereksiz olduğunu iddia etmektedir.
Model-Görünüm-Denetleyici paradigması, “tasarım desenleri” kavramından birkaç yıl öncesine dayanan bir “örüntü” örneği olarak lanse ediliyor.