{"id":5644,"date":"2022-03-07T04:40:32","date_gmt":"2022-03-07T04:40:32","guid":{"rendered":"https:\/\/studysection.com\/blog\/?p=5644"},"modified":"2022-03-07T05:35:44","modified_gmt":"2022-03-07T05:35:44","slug":"template-method-python-design-patterns","status":"publish","type":"post","link":"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/","title":{"rendered":"Template Method \u2013 Python Design Patterns"},"content":{"rendered":"<p>The Template method is a Behavioral Design Pattern that outlines the operation&#8217;s skeleton while leaving the specifics to the child class to develop. Its subclasses can override the method implementations as needed, but the invocation must follow the abstract class&#8217;s rules. It is one of the most straightforward behavioral design patterns to comprehend and use. Such approaches are often utilized in framework development since they allow us to reuse a single piece of code by making little modifications. This also helps to reduce code duplication.<\/p>\n<h2>Problems without using Template Method<\/h2>\n<p>Suppose you are working on a data analysis application as a software engineer and using data mining techniques to process the data. Initially, your application was good with the <a href=\"https:\/\/studysection.com\/blog\/json-introduction\/\">JSON <\/a>version of the data. But later your application needs to collect and process the other type of data too such as CSV, XML, PDF, etc. After developing the whole application for the other required formats you found that your application has lots of similar code. Like where you process and analyze the data. This is the point where you use template methods to tackle this problem.<\/p>\n<h3>Solution using Template Method<\/h3>\n<p>We can easily solve this problem by using the template method. The template method suggests breaking down the code into small methods\/functions and calling these functions inside the template function.<br \/>\n<strong>Let\u2019s understand this with an example:<\/strong><br \/>\n<code>def read_pdf():<br \/>\n   # write the code to read pdf here<br \/>\n   return \"return pdf data\"<br \/>\ndef read_xml():<br \/>\n   # write the code to read xml here<br \/>\n   return \"return xml data\"<br \/>\ndef read_csv():<br \/>\n   # write the code to read csv here<br \/>\n   return \"return pdf data\"<br \/>\ndef read_json():<br \/>\n   # write the code to read json here<br \/>\n   return \"return json data\"<br \/>\ndef process_data(data):<br \/>\n   # write the code to process data<br \/>\n   return \"processed data\"<br \/>\ndef save_data(data):<br \/>\n   # write code to save the data<br \/>\n   return<br \/>\ndef template_function(data):<br \/>\n   process_data(data)<br \/>\n   save_data(data)<br \/>\n   print(\"`{}` was processed\".format(data))<br \/>\nif __name__ == \"__main__\":<br \/>\n   template_function(read_json)<br \/>\n   template_function(read_csv)<br \/>\n   template_function(read_pdf)<br \/>\n   template_function(read_xml)<\/code><\/p>\n<p><small><em>StudySection has a long list of certification exams that it offers through its online platform. The <a href=\"https:\/\/www.studysection.com\/cakephp-4.x-advanced\">PHP Certification Exam<\/a> is one of the programming certifications that it provides. Whether you are new to PHP programming or you have extensive experience in PHP programming, you can get a certification according to your level. Attach a PHP certification with your resume to get the most out of job offers.<\/em><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Template method is a Behavioral Design Pattern that outlines the operation&#8217;s skeleton while leaving the specifics to the child<\/p>\n","protected":false},"author":1,"featured_media":5645,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[33,441],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Template Method \u2013 Python Design Patterns - SS Blog<\/title>\n<meta name=\"description\" content=\"The Template method is a Behavioral Design Pattern that outlines the operation&#039;s skeleton while leaving the child class to develop.\" \/>\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\/template-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=\"Template Method \u2013 Python Design Patterns - SS Blog\" \/>\n<meta property=\"og:description\" content=\"The Template method is a Behavioral Design Pattern that outlines the operation&#039;s skeleton while leaving the child class to develop.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studysection.com\/blog\/template-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-03-07T04:40:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-07T05:35:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2022\/03\/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\/template-method-python-design-patterns\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/\"},\"author\":{\"name\":\"admin-studysection-blog\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\"},\"headline\":\"Template Method \u2013 Python Design Patterns\",\"datePublished\":\"2022-03-07T04:40:32+00:00\",\"dateModified\":\"2022-03-07T05:35:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/\"},\"wordCount\":300,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"keywords\":[\"Python\",\"Template\"],\"articleSection\":[\"Learn and Grow\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/\",\"url\":\"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/\",\"name\":\"Template Method \u2013 Python Design Patterns - SS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/#website\"},\"datePublished\":\"2022-03-07T04:40:32+00:00\",\"dateModified\":\"2022-03-07T05:35:44+00:00\",\"description\":\"The Template method is a Behavioral Design Pattern that outlines the operation's skeleton while leaving the child class to develop.\",\"breadcrumb\":{\"@id\":\"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/studysection.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Template 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":"Template Method \u2013 Python Design Patterns - SS Blog","description":"The Template method is a Behavioral Design Pattern that outlines the operation's skeleton while leaving the child class to develop.","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\/template-method-python-design-patterns\/","og_locale":"en_US","og_type":"article","og_title":"Template Method \u2013 Python Design Patterns - SS Blog","og_description":"The Template method is a Behavioral Design Pattern that outlines the operation's skeleton while leaving the child class to develop.","og_url":"https:\/\/studysection.com\/blog\/template-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-03-07T04:40:32+00:00","article_modified_time":"2022-03-07T05:35:44+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2022\/03\/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\/template-method-python-design-patterns\/#article","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/"},"author":{"name":"admin-studysection-blog","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402"},"headline":"Template Method \u2013 Python Design Patterns","datePublished":"2022-03-07T04:40:32+00:00","dateModified":"2022-03-07T05:35:44+00:00","mainEntityOfPage":{"@id":"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/"},"wordCount":300,"commentCount":0,"publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"keywords":["Python","Template"],"articleSection":["Learn and Grow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/","url":"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/","name":"Template Method \u2013 Python Design Patterns - SS Blog","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/#website"},"datePublished":"2022-03-07T04:40:32+00:00","dateModified":"2022-03-07T05:35:44+00:00","description":"The Template method is a Behavioral Design Pattern that outlines the operation's skeleton while leaving the child class to develop.","breadcrumb":{"@id":"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/studysection.com\/blog\/template-method-python-design-patterns\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/studysection.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Template 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":383,"_links":{"self":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/5644"}],"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=5644"}],"version-history":[{"count":2,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/5644\/revisions"}],"predecessor-version":[{"id":5647,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/5644\/revisions\/5647"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media\/5645"}],"wp:attachment":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media?parent=5644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/categories?post=5644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/tags?post=5644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}