{"id":6876,"date":"2023-06-26T04:32:03","date_gmt":"2023-06-26T04:32:03","guid":{"rendered":"https:\/\/studysection.com\/blog\/?p=6876"},"modified":"2023-06-26T04:32:03","modified_gmt":"2023-06-26T04:32:03","slug":"explain-the-state-pattern-with-an-example-in-c","status":"publish","type":"post","link":"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/","title":{"rendered":"Explain the State pattern with an example in C"},"content":{"rendered":"<p>The State pattern provides a way to encapsulate the behavior of an object into separate state classes. Each state class represents a different behavior of the object based on its internal state. By using the State pattern, you can eliminate long and complex conditional statements that check the object&#8217;s state, making the code more maintainable and flexible.<\/p>\n<p>In the State pattern, the object delegates the behavior that varies with the state to a separate object representing each state. The object&#8217;s behavior changes dynamically as it transitions from one state to another.<\/p>\n<p>Here&#8217;s an example of how the State pattern can be implemented in <strong><em>C#<\/em><\/strong>:<br \/>\n<code>\/\/ Define the State interface<br \/>\npublic interface IState<br \/>\n{<br \/>\n    void Handle(Context context);<br \/>\n}<br \/>\n\/\/ Define the ConcreteState classes<br \/>\npublic class ConcreteStateA: IState<br \/>\n{<br \/>\n    public void Handle(Context context)<br \/>\n    {<br \/>\n        \/\/ Behavior for state A<br \/>\n        \/\/ Transition to a new state if necessary<br \/>\n        context.State = new ConcreteStateB();<br \/>\n    }<br \/>\n}<br \/>\npublic class ConcreteStateB : IState<br \/>\n{<br \/>\n    public void Handle(Context context)<br \/>\n    {<br \/>\n        \/\/ Behavior for state B<br \/>\n        \/\/ Transition to a new state if necessary<br \/>\n        context.State = new ConcreteStateA();<br \/>\n    }<br \/>\n}<br \/>\n\/\/ Define the Context class<br \/>\npublic class Context<br \/>\n{<br \/>\n    private IState _state;<br \/>\n    public Context(IState state)<br \/>\n    {<br \/>\n        _state = state;<br \/>\n    }<br \/>\n    public IState State<br \/>\n    {<br \/>\n        get { return _state; }<br \/>\n        set { _state = value; }<br \/>\n    }<br \/>\n    public void Request()<br \/>\n    {<br \/>\n        _state.Handle(this);<br \/>\n    }<br \/>\n}<br \/>\n\/\/ Client code<br \/>\nvar context = new Context(new ConcreteStateA());<br \/>\ncontext.Request(); \/\/ Behaves according to ConcreteStateA<br \/>\ncontext.Request(); \/\/ Behaves according to ConcreteStateB<br \/>\ncontext.Request(); \/\/ Behaves according to ConcreteStateA again<\/code><\/p>\n<p>In this example, the State pattern is used to manage the behavior of the Context object. The Context object can have different states, represented by the IState interface and its concrete implementations, such as ConcreteStateA and ConcreteStateB. Each state is responsible for handling the Context object differently, and it can change the state of the Context object dynamically by setting its State property.<\/p>\n<p>The Context object has a Request() method that delegates the behavior to the current state, which handles it according to its own implementation. This allows the Context object to behave differently depending on its state, without having to use large conditional statements or switch statements to determine the appropriate behavior.<\/p>\n<p><small><em>StudySection gives an opportunity to beginners and experts in .NET framework to go through StudySection\u2019s <a href=\"https:\/\/www.studysection.com\/c-sharp-net-web-developer-advanced-diploma\">.NET Certification Exam<\/a> and get a .NET certification for enhancement of career in programming. If you have knowledge of the .NET framework then you can get a certificate through an online exam at StudySection.<\/em><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The State pattern provides a way to encapsulate the behavior of an object into separate state classes. Each state class<\/p>\n","protected":false},"author":1,"featured_media":6877,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[142,874],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Explain the State pattern with an example in C - SS Blog<\/title>\n<meta name=\"description\" content=\"In the State pattern, the object delegates the behavior that varies with the state to a separate object representing each state.\" \/>\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\/explain-the-state-pattern-with-an-example-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Explain the State pattern with an example in C - SS Blog\" \/>\n<meta property=\"og:description\" content=\"In the State pattern, the object delegates the behavior that varies with the state to a separate object representing each state.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/\" \/>\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-26T04:32:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/06\/state-pattern.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\/explain-the-state-pattern-with-an-example-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/\"},\"author\":{\"name\":\"admin-studysection-blog\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\"},\"headline\":\"Explain the State pattern with an example in C\",\"datePublished\":\"2023-06-26T04:32:03+00:00\",\"dateModified\":\"2023-06-26T04:32:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/\"},\"wordCount\":276,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"keywords\":[\"C\",\"State pattern\"],\"articleSection\":[\"Learn and Grow\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/\",\"url\":\"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/\",\"name\":\"Explain the State pattern with an example in C - SS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/#website\"},\"datePublished\":\"2023-06-26T04:32:03+00:00\",\"dateModified\":\"2023-06-26T04:32:03+00:00\",\"description\":\"In the State pattern, the object delegates the behavior that varies with the state to a separate object representing each state.\",\"breadcrumb\":{\"@id\":\"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/studysection.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Explain the State pattern with an example in C\"}]},{\"@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":"Explain the State pattern with an example in C - SS Blog","description":"In the State pattern, the object delegates the behavior that varies with the state to a separate object representing each state.","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\/explain-the-state-pattern-with-an-example-in-c\/","og_locale":"en_US","og_type":"article","og_title":"Explain the State pattern with an example in C - SS Blog","og_description":"In the State pattern, the object delegates the behavior that varies with the state to a separate object representing each state.","og_url":"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/","og_site_name":"Blog Posts on famous people, innovations and educational topics","article_publisher":"https:\/\/www.facebook.com\/studysection","article_published_time":"2023-06-26T04:32:03+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/06\/state-pattern.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\/explain-the-state-pattern-with-an-example-in-c\/#article","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/"},"author":{"name":"admin-studysection-blog","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402"},"headline":"Explain the State pattern with an example in C","datePublished":"2023-06-26T04:32:03+00:00","dateModified":"2023-06-26T04:32:03+00:00","mainEntityOfPage":{"@id":"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/"},"wordCount":276,"commentCount":0,"publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"keywords":["C","State pattern"],"articleSection":["Learn and Grow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/","url":"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/","name":"Explain the State pattern with an example in C - SS Blog","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/#website"},"datePublished":"2023-06-26T04:32:03+00:00","dateModified":"2023-06-26T04:32:03+00:00","description":"In the State pattern, the object delegates the behavior that varies with the state to a separate object representing each state.","breadcrumb":{"@id":"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/studysection.com\/blog\/explain-the-state-pattern-with-an-example-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/studysection.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Explain the State pattern with an example in C"}]},{"@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":259,"_links":{"self":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6876"}],"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=6876"}],"version-history":[{"count":2,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6876\/revisions"}],"predecessor-version":[{"id":6879,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6876\/revisions\/6879"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media\/6877"}],"wp:attachment":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media?parent=6876"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/categories?post=6876"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/tags?post=6876"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}