Selamlar,
Bugün sizlere Mediator Tasarım Deseni nedir, neden kullanıyoruz, neden kullanmalıyız, bunu anlatmaya çalışacağım
Yazılımda nesneler birbirleriyle konuşmak zorunda kalır. Ve çoğu zaman bu konuşmalar zamanla karmaşık bir hal alır.
Bir kullanıcı arayüzü düşün. Arama kutusu, liste, filtreler, sayfalama dört bileşen var. Kullanıcı arama kutusuna bir şey yazdığında liste güncellenmeli. Filtre değiştiğinde hem liste hem sayfalama sıfırlanmalı. Sayfa değiştiğinde liste yeniden yüklenmeli.
Bunu doğrudan yazmak şöyle görünür: arama kutusu listeyi çağırıyor, filtreyi çağırıyor. Filtre listeyi çağırıyor, sayfalamayı çağırıyor. Her bileşen diğerlerini tanımak zorunda.
Bir şeyi değiştirmek istiyorsun neye dokunacağını bilemiyorsun. Bir bileşeni test etmek istiyorsun bağımlı olduğu herkesi hazırlamak gerekiyor.
Peki ya hiçbir bileşen diğerini tanımak zorunda olmasa?
Aralarında bir aracı olsa ve herkes sadece bu aracıyla konuşsa:
- Arama kutusu aracıya söylüyor: “Arama değişti.”
- Aracı ilgili herkese iletiyor. Liste güncelleniyor, sayfalama sıfırlanıyor.
- Filtre aracıya söylüyor: “Filtre değişti.”
- Aracı yine devreye giriyor.
Hiçbir bileşen diğerini tanımıyor. Hepsi sadece aracıyı biliyor.
İşte bu aracının adı Mediator.
Mediator olmadan:
AramaKutusu → Liste
AramaKutusu → Sayfalama
Filtre → Liste
Filtre → Sayfalama
Sayfalama → Liste
Mediator ile:
AramaKutusu → Mediator
Filtre → Mediator
Sayfalama → Mediator
Mediator neyin neye tepki vereceğini biliyor ve yönetiyor. Bileşenler sadece “bu oldu” diyor, gerisine karışmıyor.
Yeni bir bileşen eklemek istiyorsun sadece Mediator’a tanıtıyorsun, mevcut bileşenlere dokunmuyorsun. Bir bileşeni test etmek istiyorsun sadece Mediator’ı taklit ediyorsun.
Observer ile Farkı Ne?
İkisi de nesneler arası iletişimi düzenliyor ama aralarında önemli bir fark var.
Observer’da yayıncı sadece “bu oldu” der, kimin ne yapacağını bilmez. Herkes kendi kararını verir.
Mediator’da ise merkezi bir koordinatör vardır. “A olduğunda B şunu yapsın, C şunu yapsın” kararı Mediator’ın içindedir.
Kısaca: Observer duyurur, Mediator yönetir.
Bu yazımda sizlere Mediator Tasarım Deseni’ni sade ve anlaşılır bir dille anlatmaya çalıştım. Umarım faydalı olmuştur. Bir sonraki yazımda görüşmek üzere, sağlıkla kalın.



