Tasarım Desenleri
TASARIM DESENLERİ
Tasarım Desenleri
Tasarım desenleri, yazılım tasarımında sürekli
karşılaşılan genel sorunlara esnek, yeniden kullanılabilir, başarılı çözümler
getiren bir takım hazır kalıplardır. Hazır olarak kodun içine konulup çalışabilen,
bitmiş tasarımlar değildir. Çeşitli durumlarda sorunların nasıl giderileceğini
açıklayan, bunlara yol gösteren açıklamalardır. Nesneye dayalı programlamada,
tasarım desenleri sınıf ve nesneler arasındaki ilişkilerin en iyi şekilde nasıl
olmaları gerektiğini açıklayan yöntemlerdir. Algoritmalar, tasarım deseni
değildir. Çünkü bunlar hesaplama sorunlarına çözüm getirirler, oysaki tasarım
desenleri yazılım tasarımı sorunlarıyla ilgilenir.
Tasarım Desenleri
Ne Yarar Sağlar?
Nesneye dayalı programlamada sınıfların kendi içinde
tutarlı, fakat diğer sınıflara en az bağımlı olmaları beklenir. Yazılım
parçalarının tekrar kolayca kullanılabilir olmaları, kolayca genişleyebilir
veya sistemden kolayca çıkarılabilir olmaları yani kısaca esnek olmaları beklenir.
Yeni ihtiyaçların, yazılımın diğer kısımlarını en az biçimde etkileyerek
yazılıma kolayca dâhil olmaları beklenir.
İşte tasarım desenleri, nesneye dayalı programlamanın bu prensiplerini doğru
bir şekilde uygulamamızı sağlar. Tasarım desenleri, daha önce sınanmış,
ispatlanmış ve yararı görülmüş yazılım yöntemleri önerdiği için geliştirme
sürecini hızlandırır. Yeniden kullanılabilir, esnek çözümler yazılımın
büyümesini, genişlemesini kolaylaştırır. Desenleri bilen, bunlara aşina olmuş
yazılımcı ve yazılım mimarları için kod okunabilirliği yüksek olur. Bu kişiler
arasında ortak bir dil yaratmayı sağlayarak, iletişimi kolaylaştırır. Sonuç
olarak tasarım desenlerini uygulayarak, etkin kodlar üretiriz, yazılımın
kalitesini arttırırız. Zamandan ve yazılım için harcanan iş gücünden de
tasarruf etmiş oluruz.
Tasarım Desenleri
Bildiğiniz üzere günümüzde
yazılım mühendisliği alanında en fazla ses getiren kurgu yazılımın gerçek dünya
ile olan ilişkisinin sağlanabilmesidir. Bu ilişki elbette nesne yönelimli
programlama tekniği ile sağlanmaktadır. Nesne yönelimli programlama tekniği
bilgisayar uygulamalarını soyut bir olgudan çıkararak insanların daha
kolay algılayabileceği hale getirmiştir. Öyle görünüyor ki, makro düzeyde
gerçek hayatı modelleme ile başlayan bu ilişki mikro düzeyde de büyük ses
getirecektir. Nitekim son yıllarda geliştirilen yapay sinir ağları ile
makinelerin çalışma sistemlerinin gün geçtikçe insanların veya canlıların
çalışma şekline yaklaştığı görülmektedir. Artık bilgisayarlardan sadece verilen
komutları yerine getirmek değil, belirli olaylar ve durumlar karşısında bazı
hükümlere varabilmeleri de istenmektedir. Burada vurgulamak istediğim nokta
şudur: bizler yazılım mühendisleri veya programcılar olarak gerçek hayatı ne
kadar iyi modelleyebiliyorsak o kadar başarılı sayılırız. Peki
"desgin pattern" konusu nerede devreye girmektedir? İşte benimde
gelmek istediğim nokta budur; "desgin patterns" bir modelin tasarımın
ustaca tasarlanmasını sağlayacak çeşitli desenlerin oluşturulmasını ve bu
desenlerin ihtiyaç dâhilinde herhangi bir modelin inşasında
kullanılabilmesini sağlar. "Design pattern" kavramı bir kurallar
topluluğundan ziyade bir işi nasıl ve en güzel ne şekilde yapabileceğimiz
gösteren yöntemler topluluğudur. Öyle ki iyi bir yazılım modelleyicisiyseniz
kendi tasarım desenlerinizi oluşturabilir ve bunları diğer ustaların
kullanımına sunabilirsiniz. Tasarım desenleri tecrübe ile oluşturulan
yapılardır. Bazıları olmazsa olmaz yapılar olmasına rağmen bazıları
tamamen yazılımın sanatsal yönünü göstermek için tasarlanmıştır. Örneğin
bu yazımın ana konusunu belirleyen "Singleton" tasarım deseni
yıllardan beri birçok kişi tarafından kullanılmıştır. Sizde bu yazıda bu
desenin amacını ve nasıl uygulandığını öğrendiğinizde eminim ki projelerinizde
mutlaka kullanacaksınız. Hemen şunu da belirteyim ki bu tasarım deseni sizi
uzaya götürmeyecektir, bu yüzden beklentilerinizi biraz daha azaltmanızda fayda
var.
O halde "design pattern" ya da "tasarım deseni" ni şu şekilde tanımlayabiliriz: Bir tasarım problemini en basit ve en efektif bir şekilde çözüme kavuşturacak yöntemdir.
O halde "design pattern" ya da "tasarım deseni" ni şu şekilde tanımlayabiliriz: Bir tasarım problemini en basit ve en efektif bir şekilde çözüme kavuşturacak yöntemdir.
Pattern
Yazılım geliştirme sürecinde kodların yeniden
kullanılabilirliğini sağlama, ortaya çıkan yazılımsal sorunları çözme ve bu
çözümlerin standartlar haline getirip yeniden kullanılabilir şekilde kodlanması
sonucu oluşan sisteme Design
Pattern (tasarım şablonu) denir. Tasarım şablonları, yazılım
geliştiricilerin karşılaştıkları sorunlar karşısında zaman içerisinde
ürettikleri çözümler ele alınarak ortaya çıkartılan standart ve en uygun çözüm
yöntemidir. Bu yöntemler tüm yazılım geliştiriciler tarafından
kullanılabilirler.
AntiPattern
AntiPattern, bir problemi
çözmek için kullanılan "kötü" çözümleri belirten bir kavramdır.
(Belki bunu tekrar etmekte fayda vardır: KÖTÜ çözümleri
belirleyen yaklaşımdır). Tabi ki bir
problemi çözerken en iyi yöntemlerin verilmesi, her zaman uygulanan yöntemdir.
Tasarım desenleri, (Design Patterns) işte bu belirttiğimiz işi en iyi şekilde
yapmaktadırlar. İnsanların yıllarca karşılaştıkları problemlere etkin çözümleri
kalıplaştırarak tekrar kullanımını sağlamışlardır. Şu anda da nesneye yönelik
tasarımda Tasarım Desenleri’ nin kullanımı, çözüm yolları için oldukça
yaygındır.
Yaratımsal
Desenler
Bu yazılım tasarım desenleri nesnelerin oluşturulması ile
ilgilenirler. Nesnelerin direkt olarak new operatörü ile oluşturulmamasını,
nesnenin oluşturulmasını başka bir sınıfta yapmamızı savunur. Yani sınıf
oluşturmamızı kapsüllemiş ve gizlemiş oluruz. Sınıf oluşturma class ’ımız
koşula bağlı olarak sınıfı oluşturur ve geri verir. Class ’ımız
içerisinde oluşturma işlemi yoktur ve hangi nesne oluşturulacağını bilmez. Bu
yapıda bize yaratılacak nesnelerin karar verme işleminde esneklik
sağlamaktadır.
·
Singleton
·
Builder
·
Factory Method
·
Prototype
Yapısal Desenler
Yapısal yazılım tasarım desenleri, sınıfların ve
nesnelerin yapısı ile ilgilenirler ve büyük çaplı projeleri oluşturulmasını
sağlarlar. Aslında yapısal tasarım desenleri sınıf yapı kalıpları ve nesne yapı
kalıpları olmak üzere ikiye bölünmüş oluyor. Bu kategorilerin içerisinde de
yapısal desenler toplam olmak üzere 7 ye ayrılıyor. Bu desenler sistemin
ihtiyacına göre birbirlerinin alternatifleridir.
·
Adapter
·
Bridge
·
Composite
·
Decorator
·
Façade
·
Flyweight
·
Proxy
Davranışsal
Desenler
Davranışsal tasarım desenleri nesnelerin davranışları
ve birbirleriyle iletişimi ile ilgilenir. Bu tasarım desenleri toplamda 11
tanedir.
·
Chain of responsibility
·
Command
·
Interpreter
·
Iterator
·
Mediator
·
Memento
·
Observer
·
State
·
Strategy
·
Template method
·
Visitor
Yorumlar
Yorum Gönder