Behavioral Patterns (Davranışsal Desenler)

Merhaba,

Bir önceki yazıda Structural Patterns (Yapısal Desenler) konusunu inceledik. Bu yazıda ise Behavioral Patterns (Davranışsal Desenleri) inceliyor olacağız. Öncelikle davranışsal desenleri hatırlayalım:

Behavioral Patterns (Davranışsal Desenler)

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

Command

Bu tasarım deseni birçoğumuzun farkında olmadan kullandığı desenlerden birsidir. Bu desen, sarmalanan işlemleri projenin farklı yerlerinde tekrar kullanılabilir hale getirir.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/command_pattern_uml_diagram.jpg[/caption]

Bu desene ait örneğe buradan ulaşabilirsiniz.

Strategy

Bu tasarım deseni, aynı işlemin birden fazla şekilde yapılabileceği durumlarda kullanılır.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/strategy_pattern_uml_diagram.jpg[/caption]

Bu desene ait örneğe buradan ulaşabilirsiniz.

Observer

Sınıfta bir değişiklik olduğunda diğer sınıfların haberdar olmasını sağlayan tasarım desenidir. Örnek olarak, üye olan kullanıcılara yazılarda değişiklik yapıldığında mail gönderilmesi vb. verilebilir. Veritabanındaki trigger mantığı gibi de düşünebilirsiniz.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/observer_pattern_uml_diagram.jpg[/caption]

Bu desene ait örneğe buradan ulaşabilirsiniz.

State

Durum tasarım deseni, durumu değiştiğinde davranışları da değişen nesnelerin yönetiminde kullanılır.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/state_pattern_uml_diagram.jpg[/caption]

Bu desene ait örneğe buradan ulaşabilirsiniz.

Template

Template (Şablon) metot davranışsal tasarım desenlerinden birisidir. Yapılacak olan algoritmanın soyut sınıflar üzerinde belirlenerek, somut sınıflarda değişmesine olanak sağlar. Algoritmadaki değişikliklere göre somut sınıflar oluşturulur ve değişiklik işlenmiş olur. Template ile Strategy deseni ile karıştırmamak gerekir. Strategy deseni, davranışın tamamı değiştiği durumlarda kullanılır. Template ise bir kısım değişiklikler olduğundan kullanılmaktadır. Strategy desende davranışlar delege yoluyla direk alt sınıflara geçirilir. Template metotta soyutlama yönetemi ile algoritma değiştirilir.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/template_pattern_uml_diagram.jpg[/caption]

Desene ait örneği buradan inceleyebilirsiniz.

Iterator

Kelime anlamı olarak tekrarlayıcı anlamına gelmektedir. Kümelenmiş nesne elemanlarına erişimin efektif olarak gerçeklenmesidir. Tutulacak olan liste tipine olan bağımlılığı ortadan kaldırmak için kullanılır.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/iterator_pattern_uml_diagram.jpg[/caption]

Örneği buradan inceleyebilirsiniz.

Interpreter

Yorumlayıcı tasarım deseni, belli bir düzen veya kurala göre sıralanmış verilerin, yorumlanarak istenilen çıktı üretmesini sağlar. Bu yapıya örnek programlama dilleri verilebilir. Her programlama dilinin syntax’ı vardır. Geliştirici bu synyax’a göre yazımlar gerçekleştirir. Bu yazımlar yorumlanarak çıktılar elde edilir.

[caption id=”” align=”alignnone” width=”536"]

https://www.tutorialspoint.com/design_pattern/images/interpreter_pattern_uml_diagram.jpg[/caption]

desene ait örneği buradan inceleyebilirsiniz.

Memento

Hatırlayıcı tasarım deseni, nesnelerin tamamının veya bir kısmının, belirli bir anda kayıt altına alınarak daha sonra tekrardan oluşturulabilmesini sağlar.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/memento_pattern_uml_diagram.jpg[/caption]

Bu deseni, bir nesnenin ilk haline veya T anındaki durumuna geri döndürmek istediğimiz durumlarda kullanırız. Örneği buradan inceleyebilirsiniz.

Chain of Responsibility

Sisteme gelen isteğin hangi nesne tarafından cevaplanacağının bilinmediği zamanlarda kullanılır. Bu desende, istekle ilgili tüm nesneleri bir zincirin halkaları gibi dizilirler. Her nesne kendinden sonraki nesneyi bilir sadece ve kendine gelen isteğe cevap dönemiyorsa isteği bir sonraki nesneye havale eder.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/chain_pattern_uml_diagram.jpg[/caption]

Örneği buradan inceleyebilirsiniz.

Mediator

Aracı tasarım deseni, aynı tipteki veya aynı arayüz üzerinden türemiş nesneler arasında iletişimi sağlayan tasarım kalıbıdır.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/mediator_pattern_uml_diagram.jpg[/caption]

Örneği buradan inceleyebilirsiniz.

Visitor

Ziyaretçi tasarım deseni, çok sayıda ve farklı tipteki nesneler üzerinde işlem yapabilmek amacıyla kullanılır. İşlem yapılacak nesnelerde herhangi bir değişiklik yapılmaz. İşlemi ziyaretçi nesneleri yapar. Eğer sisteme yeni nesneler eklenmiyor, fakat sık sık yeni işlemlerin eklenmesi gerekiyorsa bu tasarım deseni kullanılabilir. Bu tasarım deseninin kullanılmasıyla, yapılacak işlemle ilgili kodların merkezi bir nesnede toplanır.

[caption id=”” align=”alignnone” width=”560"]

https://www.tutorialspoint.com/design_pattern/images/visitor_pattern_uml_diagram.jpg[/caption]

Ziyaretçi tasarım deseni, birlikte kullanılan nesnelerden bir algoritmayı ayırmak istediğimizde kullanılır. Örneği buradan inceleyebilirsiniz.

Piyasada en çok kullanılan tasarım desenlerini inceledik. Her desen için verilen UML’leri ve örnekleri sabırla inceleyip test ettikten sonra konuyu anlayıp, uygulayacağınızdan şüpheniz olmasın.

Faydalı olması dileğiyle. :)