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.



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
·         Abstract Factory
·         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

Bu blogdaki popüler yayınlar

VLSI Devre Tasarımı

Yapay Sinir Ağlarına Giriş

İnsan Bilgisayar Etkileşimi