Davranışsal Kalıplar (Behavioral Patterns)

Eyl 08, 2013
Belirli görevlerin bu işleri yapmak üzere tasarlanmış nesnelere gönderilmesi ve geri dönen sonuçların işlenmesi davranışsal tasarım kalıpları içerisinde yapılan bir işlemdir. Davranışsal tarım kalıpları içerisinde bilinen ve sıklıkla kullanılan kalıplar şu şekildedir.
  • Komut Kalıbı (Command Pattern)
    Bir nesne üzerindeki işlemlerin yapılmasındaki süreci bilmediğimizde ya da kullanılmak istenen nesnenin tanınmadığı durumlarda, komut tasarım kalıbı ile yapılmak istenen işlem bir nesneye dönüştürülerek, alıcı nesne tarafından işlemin yerine getirilmesi amaçlanmaktadır.
  • Hatıra Kalıbı (Memory Pattern)
    Bir nesnenin, daha önce sahip olduğu durumlardan birine tekrar dönüştürülebilmesi için hatıra tasarım kalıbı kullanılır. Bu sayede belirli durumlardan sonra nesnelerin aldıkları çeşitli durumların kolaylıkla değiştirilebilmesi ve bu durumların farklı sınıflarda tanımlanarak kullanılabilirliğinin arttırılması amaçlanmaktadır.
  • Strateji Kalıbı (Strategy Pattern)
    Bir işlemin yerine getirilmesi için birden fazla metot kullanılıyor olabilir. İhtiyaçlara göre bir metodun seçilip, uygulaması için strateji tasarım kalıbı kullanılmaktadır. Her metot bir sınıf içinde tanımlanabilir.
  • Tekrarlayıcı Kalıbı (Iterator Pattern)
    Tekrarlayıcı tasarım kalıbı ile bir listede yer almakta olan nesnelerin sırasıyla, listenin yapısını ve çalışma tarzının uygulamanın diğer kısımları ile olan bağlantılarını en aza indirmek için uygulamadan soyutlama amaçlı kullanılabilmektedir.

  • Durum Kalıbı (State Pattern)
    Durum tasarım kalıbı kullanarak, bir nesnenin metotları, sahip olduğu özellikler değiştiği zaman değiştirilebilir. Bu durumda nesnenin sahip olduğu sınıf yapısı değiştirilmiş olacaktır.

  • Sorumluluk Zinciri Kalıbı (Chain of responsibility Pattern)
    Sorumluluk zinciri kalıbı sisteme gönderilen bir isteğin (komut) hangi nesne tarafından cevaplanması gerektiğini bilmediğimiz durumlarda ya da isteği yapan nesne ve servis sağlayan nesne arasında sıkı bir bağ oluşmasını engellememiz gerektiğinde kullanılmaktadır. Bu tasarım kalıbında servis sağlayan ilgili tüm nesneler birbirleriyle ilişkili hale getirilir. Bir nesne zincirdeki kendinden sonraki nesneyi tanır ve isteğe cevap veremediği durumda, kendinden sonraki nesneye iletir. Bu işlem, zincirde bulunan doğru servis sağlayıcı nesneyi bulana kadar devam eder.
  • Aracı Kalıbı (Mediator Pattern)
    Aracı tasarım kalıbı nesnelerin yönetimi ve aralarındaki iletişimin merkezi bir noktadan sağlanması ve yönetilmesi için kullanılmaktadır. Bu nesneler arasındaki bağı azaltmakta ve sadece bir sınıfı, yönetici sınıf olarak diğer sınıfların koordine edilmesinden sorumlu kılar.
  • Gözlemci Kalıbı (Observer Pattern)
    Uygulama içerisinde bir nesnede meydana gelen değişikliklerden haberdar olup üzerinde belli metotları çalıştırıp değişlikler yapmak isteyen diğer nesneler bulunabilmektedir. Bu durumda haberdar olmak isteyen nesneler diğer nesne ile ilişkilendirilerek, ilişkili oldukları nesnede meydana gelen değişikliklerden haberdar edilebilmektedirler. İlişki içerisinde olan nesne ile bağlantı iptal edilerek, ilişkili olduğu nesne ile arasındaki bağ sonlandırılabilir.

  • Şablon Kalıbı (Template Pattern)
    Şablon kalıbı ile bir algoritma için gerekli işlemler soyut olarak tanımlanır. Alt sınıflar algoritma için gerekli bir yada birden fazla işlemi kendi bünyelerinde gerçekleştirerek, kullanılan algoritmanın kendi istekleri doğrultusunda çalışmasını sağlayabilmektedirler.
  • Ziyaretçi Kalıbı (Visitor Pattern)
    Ziyaretçi tasarım kalıbı, bir sınıf hiyerarşisinde yer alan sınıflar üzerinde değişiklik yapmadan, bu sınıflara yeni metotların eklenmesini kolaylaştırır. İstenilen metot bir ziyaretçi sınıfında tanımlanabilir. Burada bahsedilen kalıp programcı tarafından farkında olmadan sıklıkla kullanılmaktadır. C# 3.0 ile gelen partial(bölümsel) sınıfların tanımlanabilmesi bu kalıbın gelişmesini sağlamıştır.
  • Yorumlayıcı Kalıbı (Interpreter Pattern)
    Sıklıkla karşılaşılan belli mantıksal kalıpların bir bütün içerisinde yer almasını sağlamak amacıyla kullanılmaktadır. Dil bilgisi kuralları gibi kalıplar içerisinde yer alan ifadelerin yorumlanması amacıyla kullanılması tercih edilmektedir.