{"id":36372,"date":"2025-12-14T19:41:18","date_gmt":"2025-12-14T16:41:18","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36372"},"modified":"2025-12-14T19:41:18","modified_gmt":"2025-12-14T16:41:18","slug":"mediator-tasarim-deseni-nedir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/","title":{"rendered":"Mediator Tasar\u0131m Deseni Nedir?"},"content":{"rendered":"<p><body><\/p>\n<p>Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a, farkl\u0131 bile\u015fenler aras\u0131ndaki ileti\u015fim y\u00f6netimi \u00f6nemli bir zorluk haline gelir. Bir sistemdeki nesneler do\u011frudan birbirleriyle etkile\u015fime girdi\u011finde, zamanla yo\u011fun bir ba\u011f\u0131ml\u0131l\u0131k a\u011f\u0131 olu\u015fur. Bu durum, kodun anla\u015f\u0131lmas\u0131n\u0131, bak\u0131m\u0131n\u0131 ve geni\u015fletilmesini son derece zorla\u015ft\u0131r\u0131r. \u0130\u015fte tam da bu noktada, Mediator (Arabulucu) tasar\u0131m deseni devreye girerek bu karma\u015f\u0131kl\u0131\u011f\u0131 y\u00f6netmek i\u00e7in zarif bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<h2>Mediator Tasar\u0131m Deseni Nedir?<\/h2>\n<p>Mediator, <b>davran\u0131\u015fsal (behavioral)<\/b> bir tasar\u0131m desenidir. Amac\u0131, bir grup nesnenin (i\u015fbirlik\u00e7ilerin) do\u011frudan birbirleriyle ileti\u015fim kurmas\u0131n\u0131 engelleyerek, t\u00fcm ileti\u015fimi merkezi bir arabulucu (mediator) nesnesi \u00fczerinden ger\u00e7ekle\u015ftirmektir. B\u00f6ylece, nesneler aras\u0131ndaki ba\u011f\u0131ml\u0131l\u0131klar azal\u0131r ve her nesne yaln\u0131zca arabulucuyla etkile\u015fime girer. Bu, sistemin daha gev\u015fek ba\u011fl\u0131 (loosely coupled) ve daha kolay y\u00f6netilebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Temel Bile\u015fenler<\/h3>\n<p>Mediator deseninin temel olarak d\u00f6rt ana bile\u015feni vard\u0131r:<\/p>\n<ol>\n<li><b>Mediator (Arabulucu) Aray\u00fcz\u00fc:<\/b> \u0130\u015fbirlik\u00e7i nesnelerin arabulucu ile ileti\u015fim kurmak i\u00e7in kullanaca\u011f\u0131 metotlar\u0131 tan\u0131mlar. Bu, genellikle bir aray\u00fcz veya soyut bir s\u0131n\u0131f olabilir.<\/li>\n<li><b>ConcreteMediator (Somut Arabulucu):<\/b> Mediator aray\u00fcz\u00fcn\u00fc uygular ve i\u015fbirlik\u00e7i nesneler aras\u0131ndaki ileti\u015fimi y\u00f6neten ger\u00e7ek mant\u0131\u011f\u0131 i\u00e7erir. Hangi i\u015fbirlik\u00e7inin hangi olaya nas\u0131l tepki verece\u011fini bilir ve ileti\u015fimi orkestra eder.<\/li>\n<li><b>Colleague (\u0130\u015fbirlik\u00e7i) Aray\u00fcz\u00fc\/Soyut S\u0131n\u0131f\u0131:<\/b> Arabulucu ile ileti\u015fim kuracak nesneler i\u00e7in ortak bir aray\u00fcz veya soyut s\u0131n\u0131f tan\u0131mlar. Her i\u015fbirlik\u00e7i, arabulucuya bir referans tutar.<\/li>\n<li><b>ConcreteColleague (Somut \u0130\u015fbirlik\u00e7i):<\/b> Colleague aray\u00fcz\u00fcn\u00fc uygular. Kendi i\u00e7 mant\u0131\u011f\u0131n\u0131 bar\u0131nd\u0131r\u0131r ve ileti\u015fim kurmas\u0131 gerekti\u011finde arabulucuya ba\u015fvurur, do\u011frudan di\u011fer i\u015fbirlik\u00e7ilerle etkile\u015fime ge\u00e7mez.<\/li>\n<\/ol>\n<p>Bu yap\u0131 sayesinde, bir i\u015fbirlik\u00e7i nesnesindeki bir de\u011fi\u015fiklik, di\u011fer i\u015fbirlik\u00e7i nesneleri do\u011frudan etkilemek yerine, yaln\u0131zca arabulucu \u00fczerinden yans\u0131t\u0131l\u0131r. Arabulucu, ileti\u015fimin merkezi noktas\u0131 oldu\u011fu i\u00e7in, t\u00fcm ileti\u015fim mant\u0131\u011f\u0131 tek bir yerde toplan\u0131r.<\/p>\n<h2>Mediator Ne Zaman Kullan\u0131l\u0131r ve Avantajlar\u0131\/Dezavantajlar\u0131 Nelerdir?<\/h2>\n<h3>Kullan\u0131m Senaryolar\u0131<\/h3>\n<p>Mediator deseni, \u00f6zellikle a\u015fa\u011f\u0131daki durumlarda olduk\u00e7a faydal\u0131d\u0131r:<\/p>\n<ul>\n<li><b>Kullan\u0131c\u0131 Aray\u00fczleri (UI):<\/b> Karma\u015f\u0131k formlar veya diyalog pencereleri \u00fczerinde birden fazla UI bile\u015feninin (d\u00fc\u011fmeler, metin kutular\u0131, onay kutular\u0131 vb.) birbiriyle etkile\u015fime girmesi gerekti\u011finde. \u00d6rne\u011fin, bir onay kutusu i\u015faretlendi\u011finde baz\u0131 metin kutular\u0131n\u0131n etkinle\u015ftirilmesi veya bir d\u00fc\u011fmeye bas\u0131ld\u0131\u011f\u0131nda birden fazla alan\u0131n do\u011frulanmas\u0131.<\/li>\n<li><b>Sohbet Uygulamalar\u0131:<\/b> Bir sohbet odas\u0131ndaki kullan\u0131c\u0131lar\u0131n do\u011frudan birbirleriyle de\u011fil, sohbet odas\u0131 sunucusu (arabulucu) arac\u0131l\u0131\u011f\u0131yla mesajla\u015fmas\u0131.<\/li>\n<li><b>Hava Trafik Kontrol\u00fc:<\/b> U\u00e7aklar\u0131n (i\u015fbirlik\u00e7ilerin) do\u011frudan birbirleriyle de\u011fil, hava trafik kontrol kulesi (arabulucu) arac\u0131l\u0131\u011f\u0131yla ileti\u015fim kurmas\u0131.<\/li>\n<li><b>\u0130\u015f Ak\u0131\u015flar\u0131 (Workflows):<\/b> Bir i\u015f ak\u0131\u015f\u0131ndaki farkl\u0131 ad\u0131mlar\u0131n veya bile\u015fenlerin birbirleriyle koordineli \u00e7al\u0131\u015fmas\u0131 gerekti\u011finde, ancak do\u011frudan ba\u011f\u0131ml\u0131l\u0131k istenmedi\u011finde.<\/li>\n<li><b>Birden Fazla Nesnenin Karma\u015f\u0131k Etkile\u015fimleri:<\/b> Sistemin karma\u015f\u0131kl\u0131\u011f\u0131, nesnelerin do\u011frudan ileti\u015fim kurmas\u0131n\u0131n anla\u015f\u0131lmas\u0131 ve s\u00fcrd\u00fcr\u00fclmesi zor bir &#8220;spagetti kod&#8221; a\u011f\u0131na yol a\u00e7t\u0131\u011f\u0131nda.<\/li>\n<\/ul>\n<h3>Avantajlar\u0131<\/h3>\n<ul>\n<li><b>Azalt\u0131lm\u0131\u015f Ba\u011fl\u0131l\u0131k (Reduced Coupling):<\/b> \u0130\u015fbirlik\u00e7iler yaln\u0131zca arabulucuya ba\u011fl\u0131d\u0131r, birbirlerine de\u011fil. Bu, bir i\u015fbirlik\u00e7ide yap\u0131lan bir de\u011fi\u015fikli\u011fin di\u011ferlerini etkileme olas\u0131l\u0131\u011f\u0131n\u0131 azalt\u0131r.<\/li>\n<li><b>Merkezi \u0130leti\u015fim Kontrol\u00fc:<\/b> T\u00fcm ileti\u015fim mant\u0131\u011f\u0131 tek bir yerde (arabulucuda) topland\u0131\u011f\u0131 i\u00e7in, sistemin davran\u0131\u015f\u0131n\u0131 anlamak ve de\u011fi\u015ftirmek daha kolay hale gelir.<\/li>\n<li><b>Yeniden Kullan\u0131labilirlik:<\/b> \u0130\u015fbirlik\u00e7i nesneler, di\u011fer i\u015fbirlik\u00e7ilerle do\u011frudan ba\u011flant\u0131lar\u0131 olmad\u0131\u011f\u0131 i\u00e7in farkl\u0131 ba\u011flamlarda daha kolay yeniden kullan\u0131labilir.<\/li>\n<li><b>Bak\u0131m Kolayl\u0131\u011f\u0131:<\/b> \u0130leti\u015fim kurallar\u0131nda yap\u0131lan de\u011fi\u015fiklikler, yaln\u0131zca arabulucu s\u0131n\u0131f\u0131nda yap\u0131l\u0131r, bu da sistemin bak\u0131m\u0131n\u0131 basitle\u015ftirir.<\/li>\n<li><b>Tek Sorumluluk \u0130lkesi (Single Responsibility Principle):<\/b> \u0130\u015fbirlik\u00e7i nesneler kendi i\u015f mant\u0131klar\u0131na odaklan\u0131rken, arabulucu ileti\u015fim mant\u0131\u011f\u0131na odaklan\u0131r.<\/li>\n<\/ul>\n<h3>Dezavantajlar\u0131<\/h3>\n<ul>\n<li><b>Arabulucu &#8220;Tanr\u0131 Nesnesi&#8221; (God Object) Olabilir:<\/b> E\u011fer ileti\u015fim mant\u0131\u011f\u0131 \u00e7ok karma\u015f\u0131k hale gelirse, arabulucu s\u0131n\u0131f\u0131 \u00e7ok b\u00fcy\u00fck ve y\u00f6netilemez hale gelebilir. T\u00fcm sistemin y\u00fck\u00fcn\u00fc ta\u015f\u0131yan bir &#8220;tanr\u0131 nesnesi&#8221; haline gelme riski vard\u0131r.<\/li>\n<li><b>Soyutlama Katman\u0131:<\/b> Ek bir soyutlama katman\u0131 getirdi\u011fi i\u00e7in, basit ileti\u015fim senaryolar\u0131nda gereksiz karma\u015f\u0131kl\u0131k yaratabilir.<\/li>\n<li><b>Performans Etkisi:<\/b> Her ileti\u015fimin arabulucu \u00fczerinden ge\u00e7mesi, \u00e7ok y\u00fcksek performans gerektiren sistemlerde k\u00fc\u00e7\u00fck bir performans ek y\u00fck\u00fcne neden olabilir.<\/li>\n<\/ul>\n<h2>Java&#8217;da Mediator Deseni Uygulamas\u0131: Bir Sohbet Odas\u0131 \u00d6rne\u011fi<\/h2>\n<p>\u015eimdi, Mediator deseninin Java&#8217;da nas\u0131l uygulanabilece\u011fini, klasik bir sohbet odas\u0131 \u00f6rne\u011fi \u00fczerinden inceleyelim. Bu \u00f6rnekte, kullan\u0131c\u0131lar do\u011frudan birbirlerine mesaj g\u00f6ndermek yerine, bir sohbet odas\u0131 (arabulucu) arac\u0131l\u0131\u011f\u0131yla ileti\u015fim kuracaklard\u0131r.<\/p>\n<h3>1. Mediator Aray\u00fcz\u00fc: ChatRoom<\/h3>\n<p>Sohbet odas\u0131n\u0131n ileti\u015fim metotlar\u0131n\u0131 tan\u0131mlayan aray\u00fcz.<\/p>\n<pre><code class=\"language-java\">\n\/\/ Mediator Aray\u00fcz\u00fc\ninterface ChatRoom {\n    void sendMessage(String message, User user);\n    void addUser(User user);\n}\n<\/code><\/pre>\n<h3>2. Colleague Soyut S\u0131n\u0131f\u0131: User<\/h3>\n<p>Sohbet odas\u0131ndaki kullan\u0131c\u0131lar\u0131 temsil eden soyut s\u0131n\u0131f. Her kullan\u0131c\u0131 bir arabulucuya (sohbet odas\u0131na) referans tutar.<\/p>\n<pre><code class=\"language-java\">\n\/\/ Colleague Soyut S\u0131n\u0131f\u0131\nabstract class User {\n    protected ChatRoom mediator;\n    protected String name;\n\n    public User(ChatRoom mediator, String name) {\n        this.mediator = mediator;\n        this.name = name;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void send(String message) {\n        System.out.println(name + \" sends: \" + message);\n        mediator.sendMessage(message, this);\n    }\n\n    public abstract void receive(String message);\n}\n<\/code><\/pre>\n<h3>3. ConcreteMediator S\u0131n\u0131f\u0131: ChatRoomImpl<\/h3>\n<p>ChatRoom aray\u00fcz\u00fcn\u00fc uygulayan somut arabulucu s\u0131n\u0131f\u0131. Kullan\u0131c\u0131lar\u0131 y\u00f6netir ve mesajlar\u0131n da\u011f\u0131t\u0131m\u0131n\u0131 yapar.<\/p>\n<pre><code class=\"language-java\">\nimport java.util.ArrayList;\nimport java.util.List;\n\n\/\/ ConcreteMediator S\u0131n\u0131f\u0131\nclass ChatRoomImpl implements ChatRoom {\n    private List<User> users;\n\n    public ChatRoomImpl() {\n        this.users = new ArrayList<>();\n    }\n\n    @Override\n    public void addUser(User user) {\n        this.users.add(user);\n        System.out.println(user.getName() + \" joined the chat room.\");\n    }\n\n    @Override\n    public void sendMessage(String message, User sender) {\n        \/\/ Mesaj\u0131 g\u00f6nderen hari\u00e7 t\u00fcm kullan\u0131c\u0131lara ilet\n        for (User user : users) {\n            if (user != sender) { \/\/ G\u00f6nderen kendine mesaj almas\u0131n\n                user.receive(sender.getName() + \": \" + message);\n            }\n        }\n    }\n}\n<\/code><\/pre>\n<h3>4. ConcreteColleague S\u0131n\u0131f\u0131: ChatUser<\/h3>\n<p>User soyut s\u0131n\u0131f\u0131n\u0131 uygulayan somut i\u015fbirlik\u00e7i s\u0131n\u0131f\u0131. Mesajlar\u0131 nas\u0131l alaca\u011f\u0131n\u0131 tan\u0131mlar.<\/p>\n<pre><code class=\"language-java\">\n\/\/ ConcreteColleague S\u0131n\u0131f\u0131\nclass ChatUser extends User {\n    public ChatUser(ChatRoom mediator, String name) {\n        super(mediator, name);\n    }\n\n    @Override\n    public void receive(String message) {\n        System.out.println(name + \" received: \" + message);\n    }\n}\n<\/code><\/pre>\n<h3>5. Uygulama (Main Metodu)<\/h3>\n<p>Mediator deseninin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6steren ana program.<\/p>\n<pre><code class=\"language-java\">\n\/\/ Main Uygulama\npublic class MediatorPatternDemo {\n    public static void main(String[] args) {\n        \/\/ 1. Bir sohbet odas\u0131 (Mediator) olu\u015ftur\n        ChatRoom chatRoom = new ChatRoomImpl();\n\n        \/\/ 2. Kullan\u0131c\u0131lar (Colleagues) olu\u015ftur\n        User user1 = new ChatUser(chatRoom, \"Alice\");\n        User user2 = new ChatUser(chatRoom, \"Bob\");\n        User user3 = new ChatUser(chatRoom, \"Charlie\");\n\n        \/\/ 3. Kullan\u0131c\u0131lar\u0131 sohbet odas\u0131na ekle\n        chatRoom.addUser(user1);\n        chatRoom.addUser(user2);\n        chatRoom.addUser(user3);\n\n        System.out.println(\"\\n--- Sohbet Ba\u015fl\u0131yor ---\");\n\n        \/\/ 4. Kullan\u0131c\u0131lar mesaj g\u00f6nderir (Mediator arac\u0131l\u0131\u011f\u0131yla)\n        user1.send(\"Merhaba millet!\");\n        System.out.println();\n        user2.send(\"Selam Alice, nas\u0131ls\u0131n?\");\n        System.out.println();\n        user3.send(\"Ben de buraday\u0131m!\");\n    }\n}\n<\/code><\/pre>\n<h3>\u00c7\u0131kt\u0131<\/h3>\n<pre><code class=\"text\">\nAlice joined the chat room.\nBob joined the chat room.\nCharlie joined the chat room.\n\n--- Sohbet Ba\u015fl\u0131yor ---\nAlice sends: Merhaba millet!\nBob received: Alice: Merhaba millet!\nCharlie received: Alice: Merhaba millet!\n\nBob sends: Selam Alice, nas\u0131ls\u0131n?\nAlice received: Bob: Selam Alice, nas\u0131ls\u0131n?\nCharlie received: Bob: Selam Alice, nas\u0131ls\u0131n?\n\nCharlie sends: Ben de buraday\u0131m!\nAlice received: Charlie: Ben de buraday\u0131m!\nBob received: Charlie: Ben de buraday\u0131m!\n<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>ChatUser<\/code> nesneleri birbirlerini do\u011frudan tan\u0131m\u0131yor ve mesajlar\u0131 do\u011frudan birbirlerine g\u00f6ndermiyor. Bunun yerine, her <code>ChatUser<\/code> nesnesi, mesaj g\u00f6ndermesi gerekti\u011finde <code>ChatRoom<\/code> nesnesine ba\u015fvuruyor. <code>ChatRoom<\/code> ise mesaj\u0131 alan di\u011fer kullan\u0131c\u0131lar\u0131 belirleyip onlara iletiyor. Bu sayede, kullan\u0131c\u0131lar aras\u0131ndaki ba\u011f\u0131ml\u0131l\u0131k <code>ChatRoom<\/code> nesnesine indirgenmi\u015f oluyor.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>Mediator tasar\u0131m deseni, karma\u015f\u0131k nesne etkile\u015fimlerini basitle\u015ftirerek, yaz\u0131l\u0131m sistemlerinin daha az ba\u011f\u0131ml\u0131, daha kolay bak\u0131m\u0131 yap\u0131labilir ve daha esnek olmas\u0131n\u0131 sa\u011flayan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. \u00d6zellikle b\u00fcy\u00fck ve \u00e7ok bile\u015fenli uygulamalarda, ileti\u015fim karma\u015fas\u0131n\u0131 \u00f6nlemek i\u00e7in merkezi bir kontrol noktas\u0131 sunar. Ancak, arabulucunun bir &#8220;tanr\u0131 nesnesi&#8221; haline gelme riskine kar\u015f\u0131 dikkatli olmak ve gerekti\u011finde farkl\u0131 desenlerle birle\u015ftirmek \u00f6nemlidir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><b>1. Mediator ile Observer deseni aras\u0131ndaki fark nedir?<\/b><\/p>\n<ul>\n<li><b>Mediator:<\/b> \u0130\u015fbirlik\u00e7iler aras\u0131ndaki ileti\u015fimi do\u011frudan y\u00f6netir ve orkestra eder. \u0130\u015fbirlik\u00e7iler birbirlerini bilmez, yaln\u0131zca arabulucuyu bilirler. Arabulucu, hangi i\u015fbirlik\u00e7inin hangi mesaja nas\u0131l tepki verece\u011fini belirler. Daha \u00e7ok &#8220;tek y\u00f6nl\u00fc&#8221; bir kontrol ve y\u00f6nlendirme s\u00f6z konusudur.<\/li>\n<li><b>Observer:<\/b> Bir &#8220;subject&#8221; (konu) nesnesinin durumundaki de\u011fi\u015fiklikleri &#8220;observer&#8221; (g\u00f6zlemci) nesnelerine bildirir. Subject, kendisini g\u00f6zlemleyen observer&#8217;lar\u0131 do\u011frudan bilmez, sadece bir de\u011fi\u015fiklik oldu\u011funda onlar\u0131 uyar\u0131r. Observer&#8217;lar, subject&#8217;ten gelen bildirimlere kendi ba\u011f\u0131ms\u0131z mant\u0131klar\u0131na g\u00f6re tepki verirler. Daha \u00e7ok &#8220;yay\u0131nla-abone ol&#8221; modelidir.<\/li>\n<li>K\u0131saca: Mediator, ileti\u015fimi <b>y\u00f6netir<\/b>; Observer, de\u011fi\u015fiklikleri <b>bildirir<\/b>.<\/li>\n<\/ul>\n<p><b>2. Ne zaman Mediator yerine nesneler aras\u0131nda do\u011frudan ileti\u015fim kurmak daha iyidir?<\/b><\/p>\n<ul>\n<li>E\u011fer yaln\u0131zca iki veya \u00fc\u00e7 nesne aras\u0131nda basit ve s\u0131n\u0131rl\u0131 bir etkile\u015fim varsa, Mediator deseni gereksiz karma\u015f\u0131kl\u0131k yaratabilir.<\/li>\n<li>\u0130leti\u015fim mant\u0131\u011f\u0131 \u00e7ok basit ve de\u011fi\u015fme olas\u0131l\u0131\u011f\u0131 d\u00fc\u015f\u00fckse, do\u011frudan ileti\u015fim daha anla\u015f\u0131l\u0131r olabilir.<\/li>\n<li>Performans kritik uygulamalarda, arabulucunun getirece\u011fi k\u00fc\u00e7\u00fck ek y\u00fck bile istenmeyebilir.<\/li>\n<\/ul>\n<p><b>3. Mediator&#8217;\u0131n &#8220;Tanr\u0131 Nesnesi&#8221; olmas\u0131n\u0131 nas\u0131l engellerim?<\/b><\/p>\n<ul>\n<li><b>Sorumluluklar\u0131 B\u00f6l:<\/b> E\u011fer arabulucu \u00e7ok fazla sorumluluk \u00fcstleniyorsa, bu sorumluluklar\u0131 daha k\u00fc\u00e7\u00fck arabuluculara veya yard\u0131mc\u0131 s\u0131n\u0131flara b\u00f6lmeyi d\u00fc\u015f\u00fcn\u00fcn.<\/li>\n<li><b>Di\u011fer Desenleri Kullan:<\/b> Mediator i\u00e7inde Command, Strategy veya State gibi di\u011fer desenleri kullanarak karma\u015f\u0131k mant\u0131\u011f\u0131 mod\u00fcler hale getirebilirsiniz.<\/li>\n<li><b>\u0130leti\u015fimi S\u0131n\u0131rla:<\/b> Arabulucunun t\u00fcm olas\u0131 ileti\u015fim senaryolar\u0131n\u0131 ele almas\u0131n\u0131 beklemeyin. Sadece ger\u00e7ekten merkezi olmas\u0131 gereken ileti\u015fimi y\u00f6netmesine izin verin.<\/li>\n<\/ul>\n<p><b>4. Spring gibi framework&#8217;lerde Mediator deseni nas\u0131l kullan\u0131l\u0131r veya nereye kar\u015f\u0131l\u0131k gelir?<\/b><\/p>\n<ul>\n<li>Spring&#8217;in do\u011frudan bir &#8220;Mediator&#8221; bile\u015feni olmasa da, Spring IoC (Inversion of Control) konteyneri ve ba\u011f\u0131ml\u0131l\u0131k enjeksiyonu (DI) mekanizmas\u0131, Mediator deseninin ruhuna uygun gev\u015fek ba\u011fl\u0131 sistemler olu\u015fturman\u0131za yard\u0131mc\u0131 olur.<\/li>\n<li>\u00d6rne\u011fin, bir Spring servisi, farkl\u0131 bile\u015fenleri (repository&#8217;ler, di\u011fer servisler, d\u0131\u015f API&#8217;ler) bir araya getirerek karma\u015f\u0131k bir i\u015f ak\u0131\u015f\u0131n\u0131 y\u00f6netiyorsa, bu servis bir t\u00fcr &#8220;i\u015f ak\u0131\u015f\u0131 arabulucusu&#8221; rol\u00fc \u00fcstleniyor olabilir. Bu servis, \u00e7e\u015fitli bile\u015fenleri birbirine ba\u011flar ve aralar\u0131ndaki etkile\u015fimi koordine eder, ancak do\u011frudan ba\u011f\u0131ml\u0131l\u0131klar\u0131 Spring&#8217;in DI mekanizmas\u0131 y\u00f6netir.<\/li>\n<li>Spring Event mekanizmas\u0131, Observer desenine daha yak\u0131n olsa da, bazen belirli bir olay tipi i\u00e7in birden fazla dinleyicinin koordinasyonunu gerektiren durumlarda, olay g\u00f6nderici (publisher) ve dinleyiciler (listeners) aras\u0131nda bir &#8220;i\u015flem arabulucusu&#8221; rol\u00fc \u00fcstlenen bir Spring bile\u015feni tasarlayabilirsiniz.<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a, farkl\u0131 bile\u015fenler aras\u0131ndaki ileti\u015fim y\u00f6netimi \u00f6nemli bir zorluk haline g","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-36372","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mediator Tasar\u0131m Deseni Nedir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mediator Tasar\u0131m Deseni Nedir?\" \/>\n<meta property=\"og:description\" content=\"Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a, farkl\u0131 bile\u015fenler aras\u0131ndaki ileti\u015fim y\u00f6netimi \u00f6nemli bir zorluk haline g\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-14T16:41:18+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Mediator Tasar\u0131m Deseni Nedir?\",\"datePublished\":\"2025-12-14T16:41:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/\"},\"wordCount\":1578,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/\",\"name\":\"Mediator Tasar\u0131m Deseni Nedir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-14T16:41:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mediator Tasar\u0131m Deseni Nedir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mediator Tasar\u0131m Deseni Nedir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/","og_locale":"tr_TR","og_type":"article","og_title":"Mediator Tasar\u0131m Deseni Nedir?","og_description":"Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, uygulamalar\u0131n karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a, farkl\u0131 bile\u015fenler aras\u0131ndaki ileti\u015fim y\u00f6netimi \u00f6nemli bir zorluk haline g","og_url":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-14T16:41:18+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"10 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Mediator Tasar\u0131m Deseni Nedir?","datePublished":"2025-12-14T16:41:18+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/"},"wordCount":1578,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/","url":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/","name":"Mediator Tasar\u0131m Deseni Nedir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-14T16:41:18+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/mediator-tasarim-deseni-nedir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Mediator Tasar\u0131m Deseni Nedir?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36372"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36372\/revisions"}],"predecessor-version":[{"id":36373,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36372\/revisions\/36373"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}