Yazılım Tasarım Kalıplarına Giriş



2 dakikalık okuma
December 27, 2018

Yazılım tasarım kalıplarına değinmeden önce evvela “Nesne Yönelimli Programlama” kavramını açıklamalıyım. Bildiğiniz üzere yazılım tasarımlarında gerçek hayatı daha iyi modelleyebilme çabası sonucu Nesne Yönelimli Programlama, başka bir tabirle NYP ortaya çıkmıştır.

Nesne yönelimli programlama tekniği bilgisayar uygulamalarını soyut bir olgudan çıkararak insanların daha kolay algılayabileceği hale getirmiştir. Makro düzeyde gerçek hayatı modelleme ile başlayan bu ilişki muhtemelen mikro düzeyde de büyük ses getirecektir.

Yazılımcılar ve programcılar için en önemli olgu şudur ki :

“Gerçek hayatı ne kadar iyi modelleyebiliyorsanız o kadar başarılı sayılırsınız.”

Peki “Yazılım Tasarım Kalıpları” nın (Design Patterns) bununla ilgisi ne? İlgisi çok. Evvela “Yazılım Tasarım Kalıpları”, Nesneye Dayalı Programlama’yı nasıl daha efektif kullanırızın çözüm örnekleridir. Birçok problemin çözümü için birçok kalıp geliştirilmiş. O zaman yazılım tasarım kalıplarının bir çok tecrübeden sonra ortaya çıktığını rahatlıkla söyleyebiliriz.

“Design pattern” kavramı bir kurallar topluluğundan ziyade bir işi nasıl ve en güzel ne şekilde yapabileceğimizi gösteren yöntemler topluluğudur.

Design Pattern” konusunda yazılmış en güzel ve en popüler kaynaklardan biri Erich Gamma, Richard Helm, Ralph Johnson ve John Vlissides tarafından kaleme alınmış “Design Patterns: Elements of Reusable Object-Oriented Software”  kitabıdır. Bu kitapta en popüler tasarım kalıpları anlatılmış ve bu kalıpların çeşitli uygulamalarına yer verilmiştir. “Desgin pattern” guru’ları olarak anılan bu 4 kişi “Gangs Of Four(GOF)” olarak ta bilinmektedir.  Zaten bahsi geçen kitapta anlatılan tasarım kalıplarına da genel olarak GoF tasarım kalıpları denilmektedir.

GOF tasarım kalıpları genel olarak 3 ana grup altında incelenir. Bunları özetle şu şekilde sıralayabiliriz:

Creatinal Patterns:

Bu tasarım kalıpları bir yada daha fazla nesnenin oluşturulması ve yönetilmesi ile ilgilidir. Bu gruptaki kalıplar şunlardır:

  • Abstract Factory
  • Builder
  • Factory Method
  • Prototype

Behavioral Patterns :

Bu gruptaki kalıpların amacı belirli bir işi yerine getirmek için çeşitli sınıfların nasıl birlikte davranabileceğinin belirlenmesidir. Bu gruptakiler:

  • Chain of responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Template method
  • Visitor 

Structural Patterns:

Bu gruptaki kalıplar ise çeşitli nesnelerin birbirleri ile olan ilişkileri temel alınarak tasarlanmıştır. Bu gruptakiler:

  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Façade
  • Flyweight
  • Proxy

Ben bu yazı dizimde yukarıdaki tüm yazılım kalıplarına değinmeyeceğim. Sadece çok sık kullanılanları seçerek açıklamaya çalışacağım. Ayrıca SOLID Yazılım Prensipleri yazı dizimde bahsettiğim yazılım prensipleri de yukarıdaki bazı tasarım kalıplarından yararlanılarak oluşturulmuştur. Bunu da bir kez daha vurgulamak isterim.

Saygılar.


Etiketler: