{"id":6326,"date":"2023-01-06T05:00:24","date_gmt":"2023-01-06T05:00:24","guid":{"rendered":"https:\/\/studysection.com\/blog\/?p=6326"},"modified":"2023-01-06T05:07:25","modified_gmt":"2023-01-06T05:07:25","slug":"state-design-pattern-in-python","status":"publish","type":"post","link":"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/","title":{"rendered":"STATE DESIGN PATTERN IN PYTHON"},"content":{"rendered":"<h2>INTRODUCTION<\/h2>\n<p>The state design pattern is used when working with objects that go through a variety of states over their lifetime and respond to requests (or change states) based on their current state.<\/p>\n<p>If the state pattern is not used in this situation, the code base will wind up being needlessly complicated, and difficult to maintain due to a large number of conditional blocks. Problems where an object should alter its behavior when its internal state changes are solved using the state pattern.<\/p>\n<h3>REAL-WORLD EXAMPLE<\/h3>\n<p>Take a car for example.<br \/>\nWe can change the state of the car. We can use the brakes to slow it down or stop the car and the accelerators to accelerate it up. But the state of the car will change or not depending on the current state of the car. If the car\u2019s engine is started, we can Off it or we can use an accelerator to move the car or we can use the break to stop the car. But if the car\u2019s engine is not yet started or it is OFF, nothing will go to happen if we press the accelerator or breaks it. For a stopped car only possible next state is to ON \/start the car\u2019s engine.<\/p>\n<p><strong>Components:<\/strong><\/p>\n<ul>\n<li><strong>Context:<\/strong> Describes an interface for the client to connect. It keeps track of links to concrete state objects.<\/li>\n<li><strong>Concrete States:<\/strong> classes that include state-specific functionality<\/li>\n<li><strong>States:<\/strong> Specifies the actions that each state must do.<\/li>\n<\/ul>\n<p><strong>EXAMPLE<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/01\/python-code.png\" alt=\"PATTERN\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/01\/python-code1.png\" alt=\"PATTERN1\" \/><\/p>\n<p><strong>OUTPUT<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/01\/python-code2.png\" \/><\/p>\n<p><strong>Advantages:<\/strong><\/p>\n<ol>\n<li>We can add as many states as we want to the context without changing the other states that already exist.<\/li>\n<li>We do not have to write a large number of conditional blocks for switching between the states.<\/li>\n<\/ol>\n<p><strong>Disadvantages:<\/strong><\/p>\n<ol>\n<li>If there are few states, it would not be feasible to use this pattern as it would lead to inessential code.<\/li>\n<li>We should use the state design patterns only if states have complicated logic and state changes often, else it will complicate easy things with too many classes and objects<\/li>\n<\/ol>\n<p><small><em>If you need to prove your skills in the .NET framework, get .NET certified on StudySection. StudySection provides <a href=\"https:\/\/www.studysection.com\/c-sharp-net-web-developer-foundation-diploma\">.NET certification exam<\/a> for beginners as well as experts in the .NET framework. This .NET certification can improve your resume\u2019s success rate.<\/em><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>INTRODUCTION The state design pattern is used when working with objects that go through a variety of states over their<\/p>\n","protected":false},"author":1,"featured_media":6335,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[758,33],"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 IN PYTHON - SS Blog<\/title>\n<meta name=\"description\" content=\"The state design pattern is used when working with objects that go through a variety of states over their lifetime\" \/>\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-in-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"STATE DESIGN PATTERN IN PYTHON - SS Blog\" \/>\n<meta property=\"og:description\" content=\"The state design pattern is used when working with objects that go through a variety of states over their lifetime\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/\" \/>\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-01-06T05:00:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-06T05:07:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/01\/PYTHON.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=\"3 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-in-python\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/\"},\"author\":{\"name\":\"admin-studysection-blog\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\"},\"headline\":\"STATE DESIGN PATTERN IN PYTHON\",\"datePublished\":\"2023-01-06T05:00:24+00:00\",\"dateModified\":\"2023-01-06T05:07:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/\"},\"wordCount\":382,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"keywords\":[\"Pattern\",\"Python\"],\"articleSection\":[\"Learn and Grow\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/\",\"url\":\"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/\",\"name\":\"STATE DESIGN PATTERN IN PYTHON - SS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/#website\"},\"datePublished\":\"2023-01-06T05:00:24+00:00\",\"dateModified\":\"2023-01-06T05:07:25+00:00\",\"description\":\"The state design pattern is used when working with objects that go through a variety of states over their lifetime\",\"breadcrumb\":{\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/studysection.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"STATE DESIGN PATTERN IN PYTHON\"}]},{\"@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 IN PYTHON - SS Blog","description":"The state design pattern is used when working with objects that go through a variety of states over their lifetime","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-in-python\/","og_locale":"en_US","og_type":"article","og_title":"STATE DESIGN PATTERN IN PYTHON - SS Blog","og_description":"The state design pattern is used when working with objects that go through a variety of states over their lifetime","og_url":"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/","og_site_name":"Blog Posts on famous people, innovations and educational topics","article_publisher":"https:\/\/www.facebook.com\/studysection","article_published_time":"2023-01-06T05:00:24+00:00","article_modified_time":"2023-01-06T05:07:25+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2023\/01\/PYTHON.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":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/#article","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/"},"author":{"name":"admin-studysection-blog","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402"},"headline":"STATE DESIGN PATTERN IN PYTHON","datePublished":"2023-01-06T05:00:24+00:00","dateModified":"2023-01-06T05:07:25+00:00","mainEntityOfPage":{"@id":"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/"},"wordCount":382,"commentCount":0,"publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"keywords":["Pattern","Python"],"articleSection":["Learn and Grow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/","url":"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/","name":"STATE DESIGN PATTERN IN PYTHON - SS Blog","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/#website"},"datePublished":"2023-01-06T05:00:24+00:00","dateModified":"2023-01-06T05:07:25+00:00","description":"The state design pattern is used when working with objects that go through a variety of states over their lifetime","breadcrumb":{"@id":"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/studysection.com\/blog\/state-design-pattern-in-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/studysection.com\/blog\/"},{"@type":"ListItem","position":2,"name":"STATE DESIGN PATTERN IN PYTHON"}]},{"@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":324,"_links":{"self":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6326"}],"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=6326"}],"version-history":[{"count":5,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6326\/revisions"}],"predecessor-version":[{"id":6336,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6326\/revisions\/6336"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media\/6335"}],"wp:attachment":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media?parent=6326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/categories?post=6326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/tags?post=6326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}