{"id":6907,"date":"2023-06-30T06:18:22","date_gmt":"2023-06-30T06:18:22","guid":{"rendered":"https:\/\/studysection.com\/blog\/?p=6907"},"modified":"2023-06-30T06:18:22","modified_gmt":"2023-06-30T06:18:22","slug":"javascript-observer-pattern","status":"publish","type":"post","link":"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/","title":{"rendered":"Javascript &#8211; Observer Pattern"},"content":{"rendered":"<p>A design pattern that is frequently used in software engineering, especially in event-driven architectures, is the observer pattern. The Subject and the Observer are the two key actors in this pattern. The Subject is in charge of keeping track of its observers and informing them of any status changes. The Observer, on the other hand, is an object that is eager to receive alerts from the Subject and responds to those alerts.<\/p>\n<h2>Benefits of Javascript Observer Pattern:<\/h2>\n<ol>\n<li><strong>Loose Coupling:<\/strong> The Observer Pattern enables objects to be loosely connected, which allows them to communicate without being overly aware of one another&#8217;s implementation specifics. As a result, the code is more adaptable, maintainable, and testable.<\/li>\n<li><strong>Separation of concerns:<\/strong> The Observer Pattern differentiates between an observer&#8217;s and a subject&#8217;s concerns. The state is maintained by the Subject, and responses to changes in that state are provided by the Observers. Since neither the Subject nor the Observers are affected, it is simpler to alter or extend one of their behaviors without impacting the other.<\/li>\n<li><strong>Extensibility:<\/strong> Without changing the Subject or any current Observers, the Observer Pattern makes it simple to add new Observers to the system. This makes it simple to add new features as needed to the system.<\/li>\n<li><strong>Reusability:<\/strong> When several objects need to be alerted to changes to a shared data source, the Observer Pattern can be applied in a wide range of circumstances. It can therefore be used in a variety of applications and is a highly reusable pattern.<\/li>\n<\/ol>\n<h3>Observer Pattern Example:<\/h3>\n<p><code>\/\/ Define the Subject<br \/>\nclass Subject {<br \/>\n  constructor() {<br \/>\n    this.observers = []; \/\/ Initialize empty list of observers<br \/>\n  }<br \/>\n  subscribe(observer) {<br \/>\n    this.observers.push(observer); \/\/ Add an observer to the list<br \/>\n  }<br \/>\n  unsubscribe(observer) {<br \/>\n    this.observers = this.observers.filter(obs => obs !== observer); \/\/ Remove the observer from the list<br \/>\n  }<br \/>\n  notify(data) {<br \/>\n    this.observers.forEach(observer => observer.update(data)); \/\/ Notify all observers of the change<br \/>\n  }<br \/>\n}<br \/>\n\/\/ Define the Observer<br \/>\nclass Observer {<br \/>\n  update(data) {<br \/>\n    console.log('Data changed:', data); \/\/ Take action in response to change<br \/>\n  }<br \/>\n}<br \/>\n\/\/ Usage<br \/>\nconst subject = new Subject();<br \/>\nconst observer1 = new Observer();<br \/>\nconst observer2 = new Observer();<br \/>\nsubject.subscribe(observer1);<br \/>\nsubject.subscribe(observer2);<br \/>\nsubject.notify('hello world'); \/\/ Output: \"Data changed: hello world\"<br \/>\nsubject.unsubscribe(observer1);<br \/>\nsubject.notify('goodbye'); \/\/ Output: \"Data changed: goodbye\"<\/code><\/p>\n<p><small><em>The English language is the most widely used language as a medium of communication around the world. Having a certification for the English language can be an advantage. StudySection provides an <a href=\"https:\/\/www.studysection.com\/english-language-advanced-diploma\">English Certification Exam<\/a> that tests English language proficiency in English grammar, reading, and writing.<\/em><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A design pattern that is frequently used in software engineering, especially in event-driven architectures, is the observer pattern. The Subject<\/p>\n","protected":false},"author":1,"featured_media":6908,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[199,758],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Javascript Observer Pattern - StudySection Blog<\/title>\n<meta name=\"description\" content=\"A design pattern that is frequently used in software engineering, especially in event-driven architectures, is the Javascript pattern.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Javascript Observer Pattern - StudySection Blog\" \/>\n<meta property=\"og:description\" content=\"A design pattern that is frequently used in software engineering, especially in event-driven architectures, is the Javascript pattern.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Posts on famous people, innovations and educational topics\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/studysection\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-30T06:18:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/06\/Javascript1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin-studysection-blog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@studysection\" \/>\n<meta name=\"twitter:site\" content=\"@studysection\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin-studysection-blog\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/\"},\"author\":{\"name\":\"admin-studysection-blog\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\"},\"headline\":\"Javascript &#8211; Observer Pattern\",\"datePublished\":\"2023-06-30T06:18:22+00:00\",\"dateModified\":\"2023-06-30T06:18:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/\"},\"wordCount\":300,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"keywords\":[\"JavaScript\",\"Pattern\"],\"articleSection\":[\"Learn and Grow\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/\",\"url\":\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/\",\"name\":\"Javascript Observer Pattern - StudySection Blog\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/#website\"},\"datePublished\":\"2023-06-30T06:18:22+00:00\",\"dateModified\":\"2023-06-30T06:18:22+00:00\",\"description\":\"A design pattern that is frequently used in software engineering, especially in event-driven architectures, is the Javascript pattern.\",\"breadcrumb\":{\"@id\":\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/studysection.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Javascript &#8211; Observer Pattern\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/studysection.com\/blog\/#website\",\"url\":\"https:\/\/studysection.com\/blog\/\",\"name\":\"Blog Posts on famous people, innovations and educational topics\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/studysection.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/studysection.com\/blog\/#organization\",\"name\":\"StudySection\",\"url\":\"https:\/\/studysection.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png\",\"contentUrl\":\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png\",\"width\":920,\"height\":440,\"caption\":\"StudySection\"},\"image\":{\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/studysection\",\"https:\/\/twitter.com\/studysection\",\"https:\/\/www.instagram.com\/study.section\/\",\"https:\/\/www.linkedin.com\/company\/studysection\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\",\"name\":\"admin-studysection-blog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g\",\"caption\":\"admin-studysection-blog\"},\"url\":\"https:\/\/studysection.com\/blog\/author\/admin-studysection-blog\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Javascript Observer Pattern - StudySection Blog","description":"A design pattern that is frequently used in software engineering, especially in event-driven architectures, is the Javascript pattern.","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:\/\/studysection.com\/blog\/javascript-observer-pattern\/","og_locale":"en_US","og_type":"article","og_title":"Javascript Observer Pattern - StudySection Blog","og_description":"A design pattern that is frequently used in software engineering, especially in event-driven architectures, is the Javascript pattern.","og_url":"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/","og_site_name":"Blog Posts on famous people, innovations and educational topics","article_publisher":"https:\/\/www.facebook.com\/studysection","article_published_time":"2023-06-30T06:18:22+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/06\/Javascript1.png","type":"image\/png"}],"author":"admin-studysection-blog","twitter_card":"summary_large_image","twitter_creator":"@studysection","twitter_site":"@studysection","twitter_misc":{"Written by":"admin-studysection-blog"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/#article","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/"},"author":{"name":"admin-studysection-blog","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402"},"headline":"Javascript &#8211; Observer Pattern","datePublished":"2023-06-30T06:18:22+00:00","dateModified":"2023-06-30T06:18:22+00:00","mainEntityOfPage":{"@id":"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/"},"wordCount":300,"commentCount":0,"publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"keywords":["JavaScript","Pattern"],"articleSection":["Learn and Grow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/studysection.com\/blog\/javascript-observer-pattern\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/","url":"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/","name":"Javascript Observer Pattern - StudySection Blog","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/#website"},"datePublished":"2023-06-30T06:18:22+00:00","dateModified":"2023-06-30T06:18:22+00:00","description":"A design pattern that is frequently used in software engineering, especially in event-driven architectures, is the Javascript pattern.","breadcrumb":{"@id":"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/studysection.com\/blog\/javascript-observer-pattern\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/studysection.com\/blog\/javascript-observer-pattern\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/studysection.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Javascript &#8211; Observer Pattern"}]},{"@type":"WebSite","@id":"https:\/\/studysection.com\/blog\/#website","url":"https:\/\/studysection.com\/blog\/","name":"Blog Posts on famous people, innovations and educational topics","description":"","publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/studysection.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/studysection.com\/blog\/#organization","name":"StudySection","url":"https:\/\/studysection.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png","contentUrl":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png","width":920,"height":440,"caption":"StudySection"},"image":{"@id":"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/studysection","https:\/\/twitter.com\/studysection","https:\/\/www.instagram.com\/study.section\/","https:\/\/www.linkedin.com\/company\/studysection"]},{"@type":"Person","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402","name":"admin-studysection-blog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g","caption":"admin-studysection-blog"},"url":"https:\/\/studysection.com\/blog\/author\/admin-studysection-blog\/"}]}},"views":228,"_links":{"self":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6907"}],"collection":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/comments?post=6907"}],"version-history":[{"count":1,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6907\/revisions"}],"predecessor-version":[{"id":6909,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6907\/revisions\/6909"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media\/6908"}],"wp:attachment":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media?parent=6907"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/categories?post=6907"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/tags?post=6907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}