Design Patterns (Tasarım Desenleri) Nedir?

Tasarım desenleri, sıkça karşılaşılan ve birbirine benzeyen sorunları çözmek için geliştirilmiş esnek kalıplardır. 
Nesne yönelimli programlamada, programlama dili gözetmeksizin; sınıf ve nesneler arasındaki ilişkilerin en iyi şekilde nasıl olmaları gerektiğini açıklayan yöntemlerdir. Kısaca aklın yolu bir diyerek uyguladığımız hazır çözümlerdir.

 

Tasarım desenlerini 3 ana başlıkta değerlendiririz;

1. Oluşturucu(Creational) tasarım desenleri
Nesnelerin nasl yaratılacağı hakkında öneriler sunar.

  • Abstract Factory (Soyut Fabrika)
  • Builder (Kurulum)
  • Factory (Fabrika)
  • Factory Method (Fabrika Metodu)
  • Prototype (Prototip)
  • Singleton (Tek Nesne)

2. Yapısal(Structual) tasarım desenleri
Sınıflar arasındaki ilişkileri belirleme önerileri sunar, Nasıl türetilmeli, hangi nesneleri içermeli, sınıflar birbirlerini nasıl bağlı olmalı gibi soruların cevaplarını yanıtlar.

  • Adapter (Adaptör)
  • Bridge (Köprü)
  • Composite (Ağaç Yapısı)
  • Decorator (Dekorasyon)
  • Facade (Ön Yüz)
  • Flyweight (Sinek Siklet)
  • Proxy (Vekil)

3. Davranışsal tasarım desenleri
Soruna göre nesneler arası ortak haberleşmeyi en iyi şekilde kurmamıza öneriler sunar.

  • Chain of Responsibility (Sorumluluk Zinciri)
  • Command (Komut)
  • Interpreter (Yorumlayıcı)
  • Iterator (Tekrarlayıcı)
  • Mediator (Arabulucu)
  • Observer (Gözlemci)
  • State (Durum)
  • Strategy (Strateji)
  • Template Method (Şablon Metodu)
  • Visitor (Ziyaretçi)

Tasarım desenleri bize ne sağlar?

Hepimiz bir şey kodlarken gözümüzden kaçan, yada o an hatırlayamadığımız ve ileride bize sorun teşkil edecek hatalar yapabiliriz. İlk başta bunu engeller. Ortak bir dil konuştuğumuz için özellikle takım çalışmalarında büyük kolaylık sağlar. Bir koda baktığınızda "bu adam hangi kafayla bunu yazmış?" sorununu çözer.

Biraz Kişisel !...

İşlerimin yoğunluğundan uzunca bir süre konu anlatımlarına vakit ayıramamıştım. Çalıştığım reklam ajansından istifa ettiğim için şu sıralar biraz rahatım. Bu süreçte yazılım tasarım desenlerinden en çok karşımıza çıkanları, örneklerle açıklayarak bloguma yeni bir yazı dizisi ekleyeceğim.

Son olarak artık java geliştiricisyim, üzülerek söylüyorum ki PHP dili geçerliliğini giderek kaybediyor. NodeJS, Python yada dinozor JAVA dillerinden biriyle ilerlemenizi tavsiye ederim. 


Yazı Görseli: Guillaume Kurkdjian


Kategoriler: Programlama PHP JAVA