Nedir Bu Tasarım Desenleri ? (Design Patterns)

Evet arkadaşlar,

Bugün konumuz en önemli ve en çok fark yaratan konulardan olan tasarım desenleri. Tasarım desenleri konusunda bende kendimi geliştirmeye, öğrenmeye çalışıyorum. Bu yazıda kendimce tasarım desenlerini basit şekilde anlatmaya, daha detaylı araştırmak isteyen arkadaşlar için ise kaynak paylaşmaya çalışacağım.

Öncelikle design patterns yani tasarım desenleri nedir sorusuna cevap vermeye çalışarak başlayalım.  Gang of Four topluluğu tarafından yayınlanan tasarım desenleri ,Nesne Yönelimli Programlama da karşılaşılmış tasarım sorunlarına üretilmiş optimum  çözümler olarak tanımlanabilir. Tasarım desenleri bizlere daha yönetilebilir ve okunabilir kod yazmak konusunda avantajlar sağlar. Bunun yanında performans ve geliştirilebilirlik konusunda da katkıları vardır.  Tasarım desenleri genel olarak 3 başlık altında toplanır.Bunlar;

Creational Patterns-Kurucu Desenler: Nesnelerin oluşturulması ile ilgili patternlerdir.

  • Abstract Factory: İlişkili sınıfların oluşturulmasında kullanılır.
  • Factory Method:  Birden fazla türetilmiş sınıfın tek bir örneğinin oluşturulmasında kullanılır.
  • Builder: Nesne üretilirken belirli özellikler vermemizi sağlayan desendir.
  • Prototype: Nesnenin bir prototipten kopyalanarak üretilmesinde kullanılır.
  • Singleton: En çok bilinen tasarım desenlerinden biridir. Programın yaşam döngüsü içerisinde bir nesnenin sadece bir kez oluşturulmasında kullanılır.

Structural Patterns – Yapısal Desenler: Nesnelerin birbiri ile olan ilişkisini konu alır.

  • Adapter: Farklı sınıfların interfacelerini eşleştirir. Farklı yapıdaki nesnelerin kullanımı içindir.
  • Bridge:  Nesnelerin uygulama ve arayüzlerini birbirinden ayırır.
  • Composite:  Nesnelerin ağaç yapısında basit bir şekilde hiyerarşik olarak iç içe kullanımı içindir.
  • Decorator: Nesnelere dinamik olarak görevler eklemek için kullanılır.
  • Facade: Alt sistemleri tek bir sınıftan yönetmek için kullanılır.
  • Flyweight: Benzer,sık kullanılan nesnelerle veri paylaşımında bellek kullanımını en aza indirmek içindir.
  • Proxy: Başka bir nesneyi temsil eden bir nesnenin yönetimi ile ilgilidir.

 Behavioral Patterns – Davranışsal Desenler : Sınıfların bir görevi yerine getirirken nasıl davranacağı ile ilgili desenlerdir.

  • Chain of Responsibility: Bir isteğin belirli sınıflar üzerinden iletilerek ilgili sınıfa ulaştırılması için kullanılır.
  • Command: İşlemlerin nesne halinde kapsüllenmesi için kullanılır.
  • Interpreter: Bir program içerisine dil öğelerinin dahil edilmesi için kullanılır.
  • Iterator:  Bir koleksiyonun öğelerine sıralı erişim için kullanılır.
  • Mediator: Nesneler arasında ki iletişimi basitleştirmek için kullanılır.
  • Memento: Nesnenin bazı yada tüm özelliklerini saklayarak daha sonra tekrar bu özellikleri geri yüklemek için kullanılır.
  • Observer: Bir nesnede yapılan değişiklikleri ona bağımlı diğer nesnelere iletmek için kullanılır.
  • State: Bir nesnenin durumuna göre davranışını değiştirmek için kullanılır.
  • Strategy: Bir sınıf içerisinde algoritmaları tutarak, değiştirilebilir hale getirmek için kullanılır.
  • Template Method: Bir algoritmanın iskeletinin tanımlanıp ,adımlarını alt sınıflarda tanımlayarak geçersiz kılınabilir halde kullanmak içindir.
  • Visitor: Sınıfları değiştirmeden yeni işlemler eklemek için kullanılır.

Elimden geldiğince sizlere tasarım desenlerini anlatmaya çalıştım. Bu konuda daha detaylı bilgi için:

http://www.dofactory.com/net/design-patterns (İngilizce)

http://www.turkayurkmez.com/kategori/nesne-yonelimli-programlama/tasarim-desenleri/ (Türkçe)

adreslerine bakmanızı tavsiye ederim. Kalın sağlıcakla …

“Nedir Bu Tasarım Desenleri ? (Design Patterns)” için 2 cevap

  1. Güzel çalışma Enes emeğine sağlık. Her bir tasarım deseni ile ilgili daha detaylı bilgi içeren yazılarına başlangıç olur umarım.
    Design patterns terimi ilk kez bu dörtlünün (‘erich gamma’, ‘richard helm’, ‘ralph johnson’ ve ‘john vlissides’ in) yazdığı “Design Patterns – Elements Of Reusable Software” (tekrar kullanılabilir yazılım elemanları) kitapta detaylı olarak anlatıldığı için bu dürtlü ve yazdıkları kitap ve dolayısı ile kitap içinde geçen tasarım desenleri ünlü olmuş.
    Aslında tasarım desenleri (şablonları) bunlarla sınırlı değil. Bu kitap Nesne Yönelimli (Object Oriented) yazılım alanımdaki bileşenlerden bahseder. Daha sonraları Kurumsal yazılım tasarım desenleri, Paralel yazılım desenleri, Kurumsal entegrasyon tasarım desenleri gibi bir çok alanda benzer tasarım desen (şablonları) katalogları ve kitapları yayınlanmış.
    Bu kitabın bir diğer özelliği de bahsettiği her bir tasarım desenini daha önce başka bir yayında olmadığı kadar açık anlatmasıdır. Kitabın içeri kadar tasarım desenlerini anlatırken izlediği format da taktire şayandır.

    Credetional Patterns* -> Creational Patterns

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir