{"id":364,"date":"2015-07-11T14:59:44","date_gmt":"2015-07-11T11:59:44","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=364"},"modified":"2015-07-11T14:59:44","modified_gmt":"2015-07-11T11:59:44","slug":"c-observer-pattern-kullanimi","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/c-observer-pattern-kullanimi\/","title":{"rendered":"C# Observer Pattern Kullan\u0131m\u0131"},"content":{"rendered":"<p>Tasar\u0131m desenleri\u00a0ile ilgili daha \u00f6nceki makalemde<strong>\u00a0Behavioral <\/strong>tasar\u0131m kal\u0131plar\u0131\u00a0gurubunda yer alan <strong>Memento<\/strong> tasar\u0131m deseni ile giri\u015f yapm\u0131\u015ft\u0131k. Bu makalemde de yine Behavioral tasar\u0131m kal\u0131plar\u0131 gurubunda yer alan <strong>Observer<\/strong> tasar\u0131m deseni ile devam edece\u011fim.<\/p>\n<p><strong>Observer\u00a0<\/strong>tasar\u0131m desenindeki ama\u00e7:<\/p>\n<blockquote><p>Tasarlanm\u0131\u015f olan sistem i\u00e7erisinde, de\u011fi\u015fimini izlemek istedi\u011fimiz bir de\u011fer i\u00e7in kullan\u0131l\u0131r.<\/p><\/blockquote>\n<p>UML Diagram\u0131na bir g\u00f6z atal\u0131m:<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/ObserverDiagram.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-365 lazyload\" data-src=\"\/wp-content\/uploads\/2015\/07\/ObserverDiagram.gif\" alt=\"ObserverDiagram\" width=\"400\" height=\"298\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 400px; --smush-placeholder-aspect-ratio: 400\/298;\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Subject<\/strong>: Takip edilecek olan nesnemiz.<br \/>\n<strong>Observer<\/strong>: Abstract g\u00f6zlemci s\u0131n\u0131f\u0131m\u0131z. Soyutlaman\u0131n sebebi ise birden fazla g\u00f6zlemci taraf\u0131ndan takip edilebilmesini sa\u011flamak.<br \/>\n<strong>ConcreteObserver<\/strong>: Ger\u00e7ek takip eden nesnemiz.<\/p>\n<p>Basit bir \u00f6rnek yaparak konuyu daha iyi peki\u015ftirelim.<\/p>\n<p>\u00d6rne\u011fimizi bir e-ticaret sitesindeki kullan\u0131c\u0131 \u00fczerine\u00a0d\u00fc\u015f\u00fcnebiliriz. \u0130stedi\u011fimiz bir \u00fcr\u00fcn\u00fcn sto\u011fundaki bir de\u011fi\u015fim veya fiyat\u0131ndaki bir de\u011fi\u015fimi g\u00f6zlemlemek\/takip etmek isteyebiliriz.<\/p>\n<p>\u0130lk ba\u015fta <strong>Subject<\/strong> g\u00f6revini \u00fcstlenecek olan yani takip edilecek nesnemiz olan <strong>Product<\/strong> s\u0131n\u0131f\u0131m\u0131z\u0131 olu\u015ftural\u0131m.<\/p>\n<pre class=\"lang:c# decode:true\">    \/\/\/ &lt;summary&gt;\r\n    \/\/\/ Subject - Takip edilecek olan nesnemiz.\r\n    \/\/\/ &lt;\/summary&gt;\r\n    class Product\r\n    {\r\n        \/\/ G\u00f6zlemleyicilerimizi tutaca\u011f\u0131m\u0131z listemiz.\r\n        private List&lt;Observer&gt; _observers = new List&lt;Observer&gt;();\r\n\r\n        public void Attach(Observer observer)\r\n        {\r\n            _observers.Add(observer);\r\n        }\r\n\r\n        public void Detach(Observer observer)\r\n        {\r\n            _observers.Remove(observer);\r\n        }\r\n\r\n        private void Notify()\r\n        {\r\n            \/\/ Herhangi bir de\u011fi\u015fiklik oldu\u011funda g\u00f6zlemleyicilerimizin Update metotunu tetikleterek istenilen aksiyonu ger\u00e7ekle\u015ftirebiliriz. \u00d6rne\u011fin: Kullan\u0131c\u0131lara e-posta atmak gibi d\u00fc\u015f\u00fcnebilirsiniz.\r\n            _observers.ForEach(o =&gt; { o.Update(); });\r\n        }\r\n\r\n        public void ChangeStock()\r\n        {\r\n            ... stok de\u011fi\u015ftirilme i\u015flemleri\r\n            \/\/ Stok de\u011fi\u015ftirildi\u011finde g\u00f6zlemcilerimize bildiriyoruz.\r\n            this.Notify();\r\n        }\r\n    }<\/pre>\n<p>\u015eimdi <strong>Observer<\/strong> olan soyut s\u0131n\u0131f\u0131m\u0131z\u0131 haz\u0131rlayal\u0131m ve ard\u0131ndan ger\u00e7ek uygulayan s\u0131n\u0131f\u0131m\u0131z olan (ConcreteObserver) <strong>CustomerObserver<\/strong>&#8216;\u0131 olu\u015ftural\u0131m.<\/p>\n<pre class=\"lang:c# decode:true \">    \/\/\/ &lt;summary&gt;\r\n    \/\/\/ Observer - Soyut s\u0131n\u0131f\u0131m\u0131z.\r\n    \/\/\/ Soyutlamam\u0131z\u0131n nedeni ise birden fazla s\u0131n\u0131f taraf\u0131ndanda takip edilmesini sa\u011flamak.\r\n    \/\/\/ &lt;\/summary&gt;\r\n    abstract class Observer\r\n    {\r\n        \/\/ Herhangi bir de\u011fi\u015fimde g\u00f6zlemleyiciler taraf\u0131ndan yap\u0131lmas\u0131 istenilen aksiyonlar.\r\n        public abstract void Update();\r\n    }<\/pre>\n<p><strong>Observer<\/strong> soyut s\u0131n\u0131f\u0131n\u0131da haz\u0131rlad\u0131k ve i\u00e7erisinde de\u011fi\u015fimler kar\u015f\u0131l\u0131\u011f\u0131nda yapt\u0131r\u0131lmak istenilen aksiyonu yani <strong>Update<\/strong> metotunu tan\u0131mlad\u0131k.<\/p>\n<p>\u015eimdi <strong>CustomerObserver<\/strong> s\u0131n\u0131f\u0131na bir g\u00f6z atal\u0131m.<\/p>\n<pre class=\"lang:c# decode:true \">    \/\/\/ &lt;summary&gt;\r\n    \/\/\/ ConcreteObserver - Ger\u00e7ek takip eden nesnemiz.\r\n    \/\/\/ &lt;\/summary&gt;\r\n    class CustomerObserver : Observer\r\n    {\r\n        public override void Update()\r\n        {\r\n            Console.WriteLine(\"Takip etti\u011fim \u00fcr\u00fcn\u00fcn sto\u011fu de\u011fi\u015fti.\");\r\n            Console.ReadLine();\r\n        }\r\n    }<\/pre>\n<p>De\u011fi\u015fim sonras\u0131nda ise g\u00f6zlemleyecek olan s\u0131n\u0131f\u0131m\u0131z <strong>CustomerObserver<\/strong> update i\u015flemi sonras\u0131nda ger\u00e7ekle\u015ftirece\u011fi olan <strong>Update<\/strong> aksiyonunu uygulad\u0131k. Siz burada business rule&#8217;lar\u0131n\u0131za g\u00f6re\u00a0istedi\u011finizi yapabilirsiniz. \u00d6rne\u011fin kullan\u0131c\u0131 e-posta ile bilgilendirilmek istenebilir gibi.<\/p>\n<p>\u015eimdi kullan\u0131m\u0131na bir g\u00f6z atal\u0131m:<\/p>\n<pre class=\"lang:c# decode:true \">        static void Main(string[] args)\r\n        {\r\n            Product product = new Product();\r\n\r\n            \/\/ \u0130lgili g\u00f6zlemleyicimizi product nesnemize ekliyoruz ki de\u011fi\u015fim sonras\u0131nda notify edebilelim.\r\n            product.Attach(new CustomerObserver());\r\n\r\n            \/\/ \u00dcr\u00fcn sto\u011funu de\u011fi\u015ftiriyoruz.\r\n            product.ChangeStock();\r\n        }<\/pre>\n<p>\u0130\u015fte bu kadar, <strong>Product<\/strong> nesnemize yani subject&#8217;imize eklenen her g\u00f6zlemleyici, \u00fcr\u00fcn\u00fcn sto\u011fu de\u011fi\u015fmesi sonras\u0131nda <strong>notify<\/strong> ile bilgilendirilecek. Biz \u00f6rne\u011fimiz gere\u011fi aksiyon olarak ekrana &#8220;Takip etti\u011fim \u00fcr\u00fcn\u00fcn sto\u011fu de\u011fi\u015fti.&#8221; yazd\u0131rd\u0131k.<\/p>\n<p>Uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda b\u00f6yle bir ekran g\u00f6receksiniz.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/observer-pattern.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-367 lazyload\" data-src=\"\/wp-content\/uploads\/2015\/07\/observer-pattern.jpg\" alt=\"observer-pattern\" width=\"669\" height=\"340\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/07\/observer-pattern.jpg 669w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/07\/observer-pattern-300x152.jpg 300w\" data-sizes=\"(max-width: 669px) 100vw, 669px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 669px; --smush-placeholder-aspect-ratio: 669\/340;\" \/><\/a>Observer tasar\u0131m desenini k\u0131saca \u00f6zetledi\u011fimizde\u00a0<strong>yay\u0131mc\u0131lar<\/strong>(Publishers) ve <strong>aboneler<\/strong>(Subscribers) modelinin uyguland\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcnebiliriz. Bire-\u00e7ok ili\u015fkisi ile ba\u011fl\u0131 nesnelere, olaylar\u0131 iletmek oldu\u011funu da diyebiliriz<\/p>\n<p>Kullan\u0131m alan\u0131 olarak \u00e7ok s\u0131k kar\u015f\u0131m\u0131za \u00e7\u0131kmaktad\u0131r asl\u0131nda. <strong>MVC<\/strong>\u00a0mimarisine\u00a0bakt\u0131\u011f\u0131n\u0131zda:<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/observer-mvc.gif\"><img decoding=\"async\" class=\"aligncenter wp-image-369 size-full lazyload\" data-src=\"\/wp-content\/uploads\/2015\/07\/observer-mvc.gif\" alt=\"\" width=\"366\" height=\"164\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 366px; --smush-placeholder-aspect-ratio: 366\/164;\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Model\u00a0<\/strong>\u00fczerindeki bir de\u011fi\u015fikli\u011fi\u00a0View&#8217;a <strong>notify<\/strong> ediliyor. Model burada view&#8217;a <strong>independent<\/strong>\u00a0bir durumda.<\/p>\n<p>Bununla ilgili <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/ff649643.aspx\" target=\"_blank\">msdn <\/a>\u00fczerinde g\u00fczel bir yaz\u0131y\u0131 sizinle payla\u015fmak istiyorum:<\/p>\n<blockquote><p>When a model changes, the model iterates through all registered observers and notifies them of the change. This approach is often called &#8220;publish-subscribe.&#8221; The model never requires specific information about any views.<\/p><\/blockquote>\n<p>Ba\u015fka bir kullan\u0131m \u00f6rne\u011fi daha vermek gerekirse de event-based programlamada <strong>event-delegate<\/strong> ili\u015fkileri \u00f6rnek\u00a0g\u00f6sterilebilir.<\/p>\n<p>Umar\u0131m yeterli bilgi ve anla\u015f\u0131labilir bir \u00f6rnek olmu\u015ftur. Bir sonraki makalemde g\u00f6r\u00fc\u015fmek dile\u011fiyle.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tasar\u0131m desenleri\u00a0ile ilgili daha \u00f6nceki makalemde\u00a0Behavioral tasar\u0131m kal\u0131plar\u0131\u00a0gurubunda yer alan Memento tasar\u0131m deseni ile giri\u015f yapm\u0131\u015ft\u0131k. Bu makalemde de yine Behavioral tasar\u0131m kal\u0131plar\u0131 gurubunda yer alan Observer tasar\u0131m deseni ile devam edece\u011fim. Observer\u00a0tasar\u0131m desenindeki ama\u00e7: Tasarlanm\u0131\u015f olan sistem i\u00e7erisinde, de\u011fi\u015fimini izlemek istedi\u011fimiz bir de\u011fer i\u00e7in&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/c-observer-pattern-kullanimi\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">C# Observer Pattern Kullan\u0131m\u0131<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[47],"tags":[88,89,86,87],"class_list":["post-364","post","type-post","status-publish","format-standard","hentry","category-tasarim-kaliplari-design-patterns","tag-c-observer-kullanimi","tag-observer-design-pattern","tag-observer-pattern","tag-observer-tasarim-deseni","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":false,"content":false,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C# Observer Pattern Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp<\/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:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# Observer Pattern Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2015-07-11T11:59:44+00:00\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-observer-pattern-kullanimi\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-observer-pattern-kullanimi\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"C# Observer Pattern Kullan\u0131m\u0131\",\"datePublished\":\"2015-07-11T11:59:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-observer-pattern-kullanimi\\\/\"},\"wordCount\":526,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"keywords\":[\"c# observer kullan\u0131m\u0131\",\"Observer Design Pattern\",\"observer pattern\",\"observer tasar\u0131m deseni\"],\"articleSection\":[\"Tasar\u0131m Kal\u0131plar\u0131 (Design Patterns)\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/c-observer-pattern-kullanimi\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-observer-pattern-kullanimi\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-observer-pattern-kullanimi\\\/\",\"name\":\"C# Observer Pattern Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"datePublished\":\"2015-07-11T11:59:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-observer-pattern-kullanimi\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/c-observer-pattern-kullanimi\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/c-observer-pattern-kullanimi\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Observer Pattern Kullan\u0131m\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1777985325\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1777985325\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1777985325\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1777985325\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C# Observer Pattern Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp","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:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/","og_locale":"tr_TR","og_type":"article","og_title":"C# Observer Pattern Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2015-07-11T11:59:44+00:00","author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"4 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"C# Observer Pattern Kullan\u0131m\u0131","datePublished":"2015-07-11T11:59:44+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/"},"wordCount":526,"commentCount":4,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"keywords":["c# observer kullan\u0131m\u0131","Observer Design Pattern","observer pattern","observer tasar\u0131m deseni"],"articleSection":["Tasar\u0131m Kal\u0131plar\u0131 (Design Patterns)"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/","url":"https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/","name":"C# Observer Pattern Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"datePublished":"2015-07-11T11:59:44+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/c-observer-pattern-kullanimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"C# Observer Pattern Kullan\u0131m\u0131"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1777985325","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1777985325","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1777985325","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1777985325"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=364"}],"version-history":[{"count":4,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/364\/revisions"}],"predecessor-version":[{"id":372,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/364\/revisions\/372"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}