{"id":6747,"date":"2023-05-15T04:24:51","date_gmt":"2023-05-15T04:24:51","guid":{"rendered":"https:\/\/studysection.com\/blog\/?p=6747"},"modified":"2023-10-16T07:18:37","modified_gmt":"2023-10-16T07:18:37","slug":"state-design-pattern-2","status":"publish","type":"post","link":"https:\/\/studysection.com\/blog\/state-design-pattern-2\/","title":{"rendered":"State Design Pattern"},"content":{"rendered":"<p>Allow objects to adjust their behavior in response to changes in their internal states using State Design Pattern. Depending on object state, a class modifies its behavior. As part of the State Pattern, we design objects to represent distinct states as well as a context object whose behavior changes as its state object does.<\/p>\n<p>There are three major components to this pattern: context, statebase, and concrete state. The client is another name for the Context. The client does not directly access any state. It merely keeps a concrete state object that describes the context object&#8217;s present behavior. All concrete states have StateBase as their base class. It might be an interface or an abstract class. Functionality that will be utilized to alter and hold the behavior of the context object is supplied for the concrete classes.<\/p>\n<p><strong>This pattern has three main parts<\/strong><\/p>\n<ol>\n<li>Context<\/li>\n<li>State<\/li>\n<li>ConcreteState<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/05\/State-Design-Pattern.png\" alt=\"State Design Pattern\" \/><\/p>\n<p><strong>Context:<\/strong><br \/>\nThis class contains a concrete state object that behaves in accordance with its current state.<\/p>\n<p><strong>State:<\/strong><br \/>\nThe Context object uses this interface to access the functionality that is changeable.<\/p>\n<p><strong>ConcreteStateA\/B:<\/strong><br \/>\nThese classes implement the State interface and give the Context object the actual functionality it needs. For each state of the Context object, a concrete state class offers functionality that is specific to that state.<\/p>\n<h3>Implementation Code:<\/h3>\n<p><code>public interface BaseStateClass<br \/>\n{<br \/>\nvoid Change(Context context);<br \/>\n}<br \/>\npublic class State1: BaseStateClass<br \/>\n{<br \/>\npublic void Change(Context context)<br \/>\n{<br \/>\ncontext.State = new State2();<br \/>\nConsole.WriteLine(\"Change state from 1 to 2.\");<br \/>\n}<br \/>\n}<br \/>\npublic class State2 : BaseStateClass<br \/>\n{<br \/>\npublic void Change(Context context)<br \/>\n{<br \/>\ncontext.State = new State3();<br \/>\nConsole.WriteLine(\"Change state from 2 to 3.\");<br \/>\n}<br \/>\n}<br \/>\npublic class State3 : BaseStateClass<br \/>\n{<br \/>\npublic void Change(Context context)<br \/>\n{<br \/>\ncontext.State = new State1();<br \/>\nConsole.WriteLine(\"Change state from 3 to 1.\");<br \/>\n}<br \/>\n}<br \/>\npublic class Context<br \/>\n{<br \/>\npublic Context(BaseStateClass state)<br \/>\n{<br \/>\nState = state;<br \/>\nConsole.WriteLine(\"Create an object of context class with initial State.\");<br \/>\n}<br \/>\npublic BaseStateClass State { get; set; }<br \/>\npublic void Request()<br \/>\n{<br \/>\nState.Change(this);<br \/>\n}<br \/>\n}<br \/>\nstatic void Main(string[] args)<br \/>\n{<br \/>\nContext context = new Context(new State1());<br \/>\n\/\/Change state request from 1 to 2.<br \/>\ncontext.Request();<br \/>\n\/\/Change state request from 2 to 3.<br \/>\ncontext.Request();<br \/>\n\/\/Change state request from 3 to 1.<br \/>\ncontext.Request();<br \/>\n}<\/code><\/p>\n<p><small><em>People having good command over the French language can get a French certification from StudySection. StudySection offers both beginner level and expert level <a href=\"https:\/\/www.studysection.com\/french-language-and-concepts-advanced\">French Certification Exams<\/a> to test the ability to communicate in the French language.<\/em><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Allow objects to adjust their behavior in response to changes in their internal states using State Design Pattern. Depending on<\/p>\n","protected":false},"author":1,"featured_media":6748,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[758,864],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>State Design Pattern - StudySection Blog<\/title>\n<meta name=\"description\" content=\"Allow objects to adjust their behavior in response to changes in their internal states using State Design 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\/state-design-pattern-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"State Design Pattern - StudySection Blog\" \/>\n<meta property=\"og:description\" content=\"Allow objects to adjust their behavior in response to changes in their internal states using State Design Pattern.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/\" \/>\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-05-15T04:24:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-16T07:18:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/05\/State-Design1.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\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/\"},\"author\":{\"name\":\"admin-studysection-blog\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\"},\"headline\":\"State Design Pattern\",\"datePublished\":\"2023-05-15T04:24:51+00:00\",\"dateModified\":\"2023-10-16T07:18:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/\"},\"wordCount\":253,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"keywords\":[\"Pattern\",\"State Design\"],\"articleSection\":[\"Learn and Grow\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/\",\"url\":\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/\",\"name\":\"State Design Pattern - StudySection Blog\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/#website\"},\"datePublished\":\"2023-05-15T04:24:51+00:00\",\"dateModified\":\"2023-10-16T07:18:37+00:00\",\"description\":\"Allow objects to adjust their behavior in response to changes in their internal states using State Design Pattern.\",\"breadcrumb\":{\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/studysection.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"State Design 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":"State Design Pattern - StudySection Blog","description":"Allow objects to adjust their behavior in response to changes in their internal states using State Design 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\/state-design-pattern-2\/","og_locale":"en_US","og_type":"article","og_title":"State Design Pattern - StudySection Blog","og_description":"Allow objects to adjust their behavior in response to changes in their internal states using State Design Pattern.","og_url":"https:\/\/studysection.com\/blog\/state-design-pattern-2\/","og_site_name":"Blog Posts on famous people, innovations and educational topics","article_publisher":"https:\/\/www.facebook.com\/studysection","article_published_time":"2023-05-15T04:24:51+00:00","article_modified_time":"2023-10-16T07:18:37+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/05\/State-Design1.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","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/studysection.com\/blog\/state-design-pattern-2\/#article","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/state-design-pattern-2\/"},"author":{"name":"admin-studysection-blog","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402"},"headline":"State Design Pattern","datePublished":"2023-05-15T04:24:51+00:00","dateModified":"2023-10-16T07:18:37+00:00","mainEntityOfPage":{"@id":"https:\/\/studysection.com\/blog\/state-design-pattern-2\/"},"wordCount":253,"commentCount":0,"publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"keywords":["Pattern","State Design"],"articleSection":["Learn and Grow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/studysection.com\/blog\/state-design-pattern-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/studysection.com\/blog\/state-design-pattern-2\/","url":"https:\/\/studysection.com\/blog\/state-design-pattern-2\/","name":"State Design Pattern - StudySection Blog","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/#website"},"datePublished":"2023-05-15T04:24:51+00:00","dateModified":"2023-10-16T07:18:37+00:00","description":"Allow objects to adjust their behavior in response to changes in their internal states using State Design Pattern.","breadcrumb":{"@id":"https:\/\/studysection.com\/blog\/state-design-pattern-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/studysection.com\/blog\/state-design-pattern-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/studysection.com\/blog\/state-design-pattern-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/studysection.com\/blog\/"},{"@type":"ListItem","position":2,"name":"State Design 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":109,"_links":{"self":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6747"}],"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=6747"}],"version-history":[{"count":2,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6747\/revisions"}],"predecessor-version":[{"id":6751,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6747\/revisions\/6751"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media\/6748"}],"wp:attachment":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media?parent=6747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/categories?post=6747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/tags?post=6747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}