Tasarım Kalıpları

Yazılım projeleri yazılımcılara verilen belirli argümanlar üzerinden oluşan projelerdir. Genellikle proje geliştirmelerinde büyük resim tam anlamıyla görüntülenemediğinden projeler zamanla değişmektedirler.Bu değişimler bazen projelerin yeniden yazılmasını gerektirmektedir. İşte bu kadar köklü değişimlerin önüne geçmek açısından projelerimizi belirli tasarım kalıplarına oturtarak ilerler isek değişimlerin maliyetlerini küçültebiliriz.

Nasıl ortaya çıkmıştır?

Kalıplar(Patterns) Amerikalı mimar Christopher Alexander tarafından 1977 yılında mimari konseptler adıyla ortaya çıkmıştır. 1987 yılında Kent Beck ve Ward Cunningham bu kalıpları kendi deneyimleri ile programlama üzerinde uygulamışlardır ve o yıl düzenlenen OOPSLA konferansında bu çalışmalarını sunmuşlardır. 1994 yılında çıkan Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four) kitabı ile tasarım kalıpları bilgisayar bilimlerinde önemli bir popülerlik kazanmıştır.

Amacı nedir?

Tasarım kalıpları yazılım projelerindeki genel problemleri en iyi yolla çözmeyi planlamaktadır. Deneyimli yazılımcıların object-oriented konusundaki best practice’ lerinden yararlanılarak farklı türlerde kalıplar tasarlanmıştır. Tasarlanan bu kalıplar projelerdeki esnekliği, okunabilirliği ve yazılabilirliği kolaylaştırmaktadırlar.

Kaç adet tasarım kalıbı vardır ve türleri nelerdir?

Gang of Four kitabında da belirtildiği üzere 23 adet tasarım kalıbı bulunmaktadır. Bu tasarım kalıpları çözümlerine göre 3 adet kategoriye ayrılmışlardır. Bunlar creational (yaratımsal) , structural (yapısal) ve behavioral (davranışsal) kalıplardır.

https://miro.medium.com/max/2560/1*8_tTgdpABrzM9HupGEfuAQ.png

Yaratımsal Kalıplar (Creational Patterns)

Yaratımsal tasarım kalıpları oluşturulacak olan nesnelerin new operatörü kullanmak yerine farklı yollar ile oluşturmayı sağlar. Bu kategorideki tasarım kalıpları aşağıda listelenmiştir.

  • Abstract Factory,
  • Builder,
  • Factory Method,
  • Prototype,
  • Singleton

gibi kalıplar yaratışsal kalıplar sınıfına girmektedir.

https://miro.medium.com/max/2560/1*MwhtLwDKmjf1EnHamtwA1w.png

Yapısal Tasarımlar (Structural Patterns)

Yapısal tasarım kalıpları sınıflar ile nesneler arasındaki kalıtım ve arayüz bağlantılarının kurulmasını sağlar. Bu kategorideki tasarım kalıpları aşağıda listelenmiştir.

  • Adapter,
  • Bridge,
  • Composite,
  • Decorator,
  • Facade,
  • Flyweight,
  • Proxy

gibi kalıplar yapısal kalıplar sınıfına girmektedir.

https://miro.medium.com/max/2560/1*XFNicWirQpMdNamqq-F0Gw.png

Davranışsal Kalıplar (Behavioral Patterns)

Davranışsal tasarım kalıpları, nesneler arasındaki ortak iletişim kalıplarının tanımlanmasını ve gerçekleşmesini sağlar.Bu kategorideki tasarım kalıpları aşağıda listelenmiştir.

  • Chain of responsibility,
  • Command,
  • Interpreter,
  • Iterator,
  • Mediator,
  • Memento,
  • Null Object,
  • Observer,
  • State,
  • Strategy,
  • Template method

gibi kalıplar davranışsal tasarım kalıpları sınıfına girmektedir.

Sonuç olarak projelerimizde esnekliği , okunulabilirliği ve yazabilirliği kolaylaştırmak için tasarım kalıplarını projelerimizde olabildiğince kullanmayı tercih etmeliyiz.

Kolay Gelsin.. 🤞