{"id":5819,"date":"2022-06-16T04:29:03","date_gmt":"2022-06-16T04:29:03","guid":{"rendered":"https:\/\/studysection.com\/blog\/?p=5819"},"modified":"2022-06-16T05:20:08","modified_gmt":"2022-06-16T05:20:08","slug":"strategy-method-python-design-patterns","status":"publish","type":"post","link":"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/","title":{"rendered":"Strategy Method \u2013 Python Design Patterns"},"content":{"rendered":"<p>The strategy method is a Behavioral Design <a href=\"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/\">pattern<\/a> that allows you to build an entire family of algorithms, encapsulates them all, separates them into classes, and lets you swap out their objects. It&#8217;s done in Python by dynamically substituting the data of methods declared within a class with the contents of functions written outside the class. It allows for algorithm selection at runtime. The Policy Procedure is another name for this method.<\/p>\n<h2>The problems without using the Strategy Method<\/h2>\n<p>Assume you&#8217;ve developed an app for a local business. Does it appear to be straightforward? Initially, the business was small, On-Sale-Discount was the only sort of discount available and some basic functionality. So. Everything was going smoothly, and maintaining such a simple application for a developer was not tough, but as time passed, the business grows and the owner of the business demanded more functionality and wants to add more forms of discounts to be included in the consumers. It is extremely simple to declare that certain changes should be made, but it is far more difficult to put them into action in a timely manner.<\/p>\n<h3>Solution using Strategy method<\/h3>\n<p>We can solve this problem in an effective and efficient way. We can construct a class called strategy class that will extract all of the algorithms into unique classes. The reference to one of the strategy classes should be stored in our real class. <\/p>\n<p><strong>Example:<\/strong><br \/>\n<code>\"\"\"<br \/>\nDefine a collection of algorithms, encapsulate each one of them, and make them<br \/>\ninterchangeable. Strategy lets the algorithm vary independently from the users that uses it.<br \/>\n\"\"\"<br \/>\nimport abc<br \/>\nclass Context:<br \/>\n    def __init__(self, strategy):<br \/>\n        self._strategy = strategy<br \/>\n    def context_interface(self):<br \/>\n        self._strategy.algorithm_interface()<br \/>\nclass Strategy(metaclass=abc.ABCMeta):<br \/>\n    @abc.abstractmethod<br \/>\n    def algorithm_interface(self):<br \/>\n        pass<br \/>\nclass ConcreteStrategy(Strategy):<br \/>\n    def algorithm_interface(self):<br \/>\n        pass<br \/>\ndef main():<br \/>\n    strategy = ConcreteStrategy()<br \/>\n    context = Context(strategy)<br \/>\n    context.context_interface()<br \/>\nif __name__ == \"__main__\":<br \/>\n    main()<\/code><\/p>\n<p><small><em>Knowledge of .NET is quite rewarding in the IT industry. If you have got some skills in the .NET framework then a <a href=\"https:\/\/www.studysection.com\/c-sharp-net-web-developer-advanced-diploma\">.NET certification<\/a> from StudySection can prove to be a good attachment with your resume. You can go for a foundation level certificate as well as an advanced level certificate in the .NET framework.<\/em><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The strategy method is a Behavioral Design pattern that allows you to build an entire family of algorithms, encapsulates them<\/p>\n","protected":false},"author":1,"featured_media":5820,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[782,33],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Strategy Method \u2013 Python Design Patterns-SS blog<\/title>\n<meta name=\"description\" content=\"The strategy method is a Behavioral Python Design pattern that allows you to build an entire family of algorithms, encapsulate them all.\" \/>\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\/strategy-method-python-design-patterns\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Strategy Method \u2013 Python Design Patterns-SS blog\" \/>\n<meta property=\"og:description\" content=\"The strategy method is a Behavioral Python Design pattern that allows you to build an entire family of algorithms, encapsulate them all.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/\" \/>\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=\"2022-06-16T04:29:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-16T05:20:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2022\/06\/Python-Design.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\/strategy-method-python-design-patterns\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/\"},\"author\":{\"name\":\"admin-studysection-blog\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\"},\"headline\":\"Strategy Method \u2013 Python Design Patterns\",\"datePublished\":\"2022-06-16T04:29:03+00:00\",\"dateModified\":\"2022-06-16T05:20:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/\"},\"wordCount\":294,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"keywords\":[\"Patterns\",\"Python\"],\"articleSection\":[\"Learn and Grow\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/\",\"url\":\"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/\",\"name\":\"Strategy Method \u2013 Python Design Patterns-SS blog\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/#website\"},\"datePublished\":\"2022-06-16T04:29:03+00:00\",\"dateModified\":\"2022-06-16T05:20:08+00:00\",\"description\":\"The strategy method is a Behavioral Python Design pattern that allows you to build an entire family of algorithms, encapsulate them all.\",\"breadcrumb\":{\"@id\":\"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/studysection.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Strategy Method \u2013 Python Design Patterns\"}]},{\"@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":"Strategy Method \u2013 Python Design Patterns-SS blog","description":"The strategy method is a Behavioral Python Design pattern that allows you to build an entire family of algorithms, encapsulate them all.","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\/strategy-method-python-design-patterns\/","og_locale":"en_US","og_type":"article","og_title":"Strategy Method \u2013 Python Design Patterns-SS blog","og_description":"The strategy method is a Behavioral Python Design pattern that allows you to build an entire family of algorithms, encapsulate them all.","og_url":"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/","og_site_name":"Blog Posts on famous people, innovations and educational topics","article_publisher":"https:\/\/www.facebook.com\/studysection","article_published_time":"2022-06-16T04:29:03+00:00","article_modified_time":"2022-06-16T05:20:08+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2022\/06\/Python-Design.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\/strategy-method-python-design-patterns\/#article","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/"},"author":{"name":"admin-studysection-blog","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402"},"headline":"Strategy Method \u2013 Python Design Patterns","datePublished":"2022-06-16T04:29:03+00:00","dateModified":"2022-06-16T05:20:08+00:00","mainEntityOfPage":{"@id":"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/"},"wordCount":294,"commentCount":0,"publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"keywords":["Patterns","Python"],"articleSection":["Learn and Grow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/","url":"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/","name":"Strategy Method \u2013 Python Design Patterns-SS blog","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/#website"},"datePublished":"2022-06-16T04:29:03+00:00","dateModified":"2022-06-16T05:20:08+00:00","description":"The strategy method is a Behavioral Python Design pattern that allows you to build an entire family of algorithms, encapsulate them all.","breadcrumb":{"@id":"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/studysection.com\/blog\/strategy-method-python-design-patterns\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/studysection.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Strategy Method \u2013 Python Design Patterns"}]},{"@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":217,"_links":{"self":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/5819"}],"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=5819"}],"version-history":[{"count":3,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/5819\/revisions"}],"predecessor-version":[{"id":5822,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/5819\/revisions\/5822"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media\/5820"}],"wp:attachment":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media?parent=5819"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/categories?post=5819"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/tags?post=5819"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}