Tasarım Desenleri(Design Patterns) Nedir?

        Tasarım Desenleri (Design Pattenrs) nesne tabanlı dillerde uygulama geliştirirken karşılaşılan ve karşılasılabilecek sorunlara çözümler üreten, yazılıma esneklik kazandıran, yazılım kalitesini artıran, ileride karşılaşılabilecek sorunlara daha kısa sürede çözüm getirmemizi sağlayan, yeni istekler doğrultusunda yazılıma yapılacak değişikliklerin daha kolay entegre edilmesini sağlayan, yazılımcıya zamandan tasarruf ettiren, işverene iş gücünden ve maliyetten kazandıran geçmiş tecrübelere göre oluşturulmuş hazır yazılım geliştirme kalıplarındır.

        Toplamda 23 tane Design Pattern vardır. Bunlar Behavioral Design Patterns (Davranışsal Tasarım Desenleri), Structural Design Patterns (Yapısal Tasarım Desenleri) ve Creator Design Patterns (Kurucu Tasarım Desenleri)   olmak üzere 3 gruba ayrılmıştır.Bunlardan bazılarını kısa kısa açıklayacagım. Anlaşılmasını kolaylaştırmak için UML diyağramları ile birlikte göstereceğim.

Behavioral Design Patterns (Davranışsal Tasarım Desenler)
  • Chain of Responsibility (Sorumluluk Zinciri)
  • Command (Komut)
  • Interpreter (Yorumlayıcı)
  • Iterator (Tekrarlayıcı)
  • Mediator (Arabulucu)
  • Memento (Hatırlayıcı)
  • Observer (Gözlemci)
  • State (Durum)
  • Strategy (Strateji)
  • Template Method (Kalıp Yordam)
  • Visitor (Ziyaretçi)

Structural Design Patterns (Yapısal Tasarım Desenler)
  • Adapter Pattern (Adaptör): 
          Yabancı bir sistemin parçalarının var olan sisteme adapte edilebilmesi ve o sistem içinde kullanılabilmesini sağlayan patterndir. Örneğin var olan sistemimize yabancı bir sistemde bulunan faks classını adapte etmek ve kullanmak için adapter pattern kullanırız. UML diyagramı aşağıdaki gibidir:
(Yakında çizeceğim) :)
  • Facade Design Pattern (Ön Yüz): 
          Bir alt sistemin parçalarını oluşturan class'ları istemciden soyutlayarak kullanımını daha da kolaylastırmak amacı ile tasarlanmış design patternidir. Facade design patternda istemciler direk olarak alt sistemlere ulaşamazlar. Bunun yerine facade aracılığı ile ulaşabilirler. Buradaki alt sistemlere örnek verecek olursam bir tanesi database logu olabilir bir digeri XML dosyalarını loglayan bir sistem olabilir digeri application logu tutuyor olabilir. Bu sistemlere istemciler facade ile ulaşabilirler. Facade design patterni daha çok bankacılık işlemlerinde kullanılır.  UML diyagramı aşağıdaki gibidir:


  • Flyweight (Hafif Ağırlık)
  • Proxy (Özdeş Nesne)
  • Bridge (Köprü):
  • Composite (Ağaç Yapısı):
  • Decorator (Dekorasyon):

Creator Design Patterns (Kurucu Tasarım Desenleri)
  • Abstract Factory Method (Soyut Fabrika):
  •          İstemcinin ihtiyacı olan ve aralarında ilişkiler bulunan nesnelerin üretiminden sorumlu olan soyut fabrikalardır. İstemcinin ihtiyacı olan ürünlerin tiplerine göre farklı fabrikalari kullanabilir.Abstract factory method daha çok veritabanı bağlantısı açma, sorgu çalıştırma ve bağlantı sonlandırma gibi işlemlerde kullanılır. Birden çok veritabanı için abstract factory method kullanılabilir. UML diyagramı aşağıdaki gibidir.



  • Factory Method (Fabrika Yordamı): 
  •           Kalıtımsal ilişkileri olan nesnelerin ürünlerinin üretilmesi amacıyla kullanılır. İstemcinin ihtiyacı olan ürünlerin üretilmesini sağlar. İstemcinin talebine göre uygun olan ürünün üretilip istemciye verilmesi işlemini yapar. Örneğin istemcinin ihtiyacı olan windows ekranları gibi. Burada Product A 'yı windows ekranı, Product B'yi web ekranı, Product C'yi de mobil ekranı olarak düşünebiliriz. UML diyagramı aşağıdaki gibidir.


  • Builder (Kurulum Nesnesi):
  • Prototype (Kopya Nesne):
  • Singleton Pattern (Tek Nesne): 
          Bir nesnenin çalışma zamanında tek olması demektir. Singleton patternde constructor private olmalı bu sayede class'a ait instance'nin çalışma zamanında yapıcı methoddan yararlanılarak oluşturulamamasına neden olur. UML diyagramı aşağıdaki gibidir.



(Yazılarımda başka sitelerden alıntılar olabilir. Okuduklarımdan anladığım kadarını burada anlatmaya çalıştım )

Yorumlar

Bu blogdaki popüler yayınlar

Spring Boot ve Hibernate Anotasyonları

CI(Continuous Integration) / CD(Continuous Delivery)