{"id":25536528,"date":"2022-08-04T01:52:32","date_gmt":"2022-08-03T20:22:32","guid":{"rendered":"https:\/\/entri.app\/blog\/?p=25536528"},"modified":"2022-11-23T14:52:03","modified_gmt":"2022-11-23T09:22:03","slug":"a-detailed-study-on-functional-patterns-in-java","status":"publish","type":"post","link":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/","title":{"rendered":"A Detailed Study on Functional Patterns in Java"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69e5d6cf56282\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69e5d6cf56282\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#Structure_of_a_Design_Pattern\" >Structure of a Design Pattern<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#_Types_of_Design_Patterns\" >\u00a0Types of Design Patterns<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#Overview_of_Design_Patterns\" >Overview of Design Patterns<\/a><\/li><\/ul><\/nav><\/div>\n<p>Design patterns\u00a0are general solutions to routine problems in software\u00a0design. Every\u00a0pattern\u00a0acts as a\u00a0blueprint\u00a0that allows customization\u00a0to solve a given\u00a0design\u00a0problem in any code during the development of software modules.<\/p>\n<p style=\"text-align: center;\"><strong><a href=\"https:\/\/bit.ly\/3ELmCiA\" target=\"_blank\" rel=\"noopener\">Learn Coding in your Language! Enroll Here!<\/a><\/strong><\/p>\n<p>A\u00a0design pattern\u00a0systematically names,\u00a0motivates\u00a0and explains a\u00a0general design\u00a0that addresses a recurring design problem in\u00a0object-oriented systems.\u00a0Design patterns\u00a0are needed to represent some of the best practices followed and adopted in\u00a0software development.<\/p>\n<p>Software Design Pattern can be defined as a\u00a0software template\u00a0or a description to solve a problem that occurs in multiple instances while designing a Software Application or a Software Framework.<\/p>\n<p>The credit of Design Patterns goes to the\u00a0Gang of Four.\u00a0Erich Gamma, Richard Helm, Ralph Johnson\u00a0and\u00a0John Vlissides\u00a0were\u00a0the authors of the book on the Java Design Patterns.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Structure_of_a_Design_Pattern\"><\/span><strong>Structure of a Design Pattern<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Structure\u00a0of any Design Pattern is considered to be highly\u00a0organised.\u00a0They are often documented in the form of a\u00a0template\u00a0such that, the users can\u00a0visually identify\u00a0the problem and instantaneously find the solution to it, based on the\u00a0relationship\u00a0between\u00a0classes\u00a0and\u00a0objects<strong>.<\/strong>\u00a0The Design Patterns Template described by the original authors of the Design Patterns is as follows:<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>Term<\/strong><\/td>\n<td><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>Pattern Name<\/strong><\/td>\n<td>Describes the essence of the pattern in a short, but expressive name.<\/td>\n<\/tr>\n<tr>\n<td><strong>Intent<\/strong><\/td>\n<td>Describes what the Pattern Does<\/td>\n<\/tr>\n<tr>\n<td><strong>Also, known as<\/strong><\/td>\n<td>List any synonyms of the pattern<\/td>\n<\/tr>\n<tr>\n<td><strong>Motivation<\/strong><\/td>\n<td>Provides an example of the problem and describes the solution to it<\/td>\n<\/tr>\n<tr>\n<td><strong>Applicability<\/strong><\/td>\n<td>Lists the situations where the pattern is applicable<\/td>\n<\/tr>\n<tr>\n<td><strong>Structure<\/strong><\/td>\n<td>Set of diagrams of the classes and objects that depict the pattern<\/td>\n<\/tr>\n<tr>\n<td><strong>Participants<\/strong><\/td>\n<td>Describes the classes and objects that participate in the design<\/td>\n<\/tr>\n<tr>\n<td><strong>Collaborations<\/strong><\/td>\n<td>Describes the Participants collaboration and their responsibilities.<\/td>\n<\/tr>\n<tr>\n<td><strong>Consequences<\/strong><\/td>\n<td>Describes the forces that exist with the pattern and the benefits<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span class=\"ez-toc-section\" id=\"_Types_of_Design_Patterns\"><\/span>\u00a0<strong>Types of Design Patterns<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Java Design Patterns are divided into<strong>\u00a0<\/strong>Four Categories:<\/p>\n<ul>\n<li><strong>Creational Design Patterns\u00a0<\/strong>are concerned with the method of creating Objects.<\/li>\n<li><strong>Structural Design Patterns\u00a0<\/strong>deal with the composition of classes and objects which form larger structures.<\/li>\n<li><strong>Behaviour Design Patterns\u00a0<\/strong>are concerned with the responsibility and interaction between the objects.<\/li>\n<li><strong>JEE Design Patterns\u00a0<\/strong>are concerned with providing solutions to the Java EE-based software applications and frameworks.<\/li>\n<\/ul>\n<h3><strong>Creational Design Patterns<\/strong><\/h3>\n<p>They are preferred during the process of class initiation. The Creational Design Patterns are further classified as follows:<\/p>\n<ul>\n<li>Factory Pattern<\/li>\n<li>Abstract Factory Pattern<\/li>\n<li>Singleton Pattern<\/li>\n<li>Prototype Pattern<\/li>\n<li>Builder Pattern.<\/li>\n<li>Object Pool Pattern<\/li>\n<\/ul>\n<p><strong>Factory Design Pattern:<\/strong>\u00a0It follows the principle of \u201cDefine an interface or abstract class for creating an object but let the subclasses decide which class to instantiate\u201c<strong>.\u00a0<\/strong>The Factory Method Pattern is also known as\u00a0Virtual Constructor<strong>.<\/strong><\/p>\n<p><strong>Advantages:<\/strong><\/p>\n<ul>\n<li>It is designed to allow all the sub-classes to choose the type of objects so as to create them.<\/li>\n<\/ul>\n<p><strong>Singleton Design Pattern:<\/strong>\u00a0It follows\u00a0\u201cdefine a class that has only one instance and provides a global point of access to it\u201c. The class must ensure that only a\u00a0single instance\u00a0should be created and a\u00a0single object\u00a0can be used by all other classes.<\/p>\n<p><strong>Advantages:<\/strong><\/p>\n<ul>\n<li>It is designed to\u00a0save memory<strong>.<\/strong><\/li>\n<li>The object is not created on every request, instead, a\u00a0single instance\u00a0is reused.<\/li>\n<\/ul>\n<h3><strong>Structural Design Patterns\u00a0<\/strong><\/h3>\n<p>It deal with the\u00a0composition\u00a0of classes and objects which form larger structures. They simplify the structure by identifying the\u00a0relationship\u00a0between the\u00a0classes\u00a0and\u00a0objects<strong>.<\/strong>\u00a0The Structural Design Patterns are further classified as follows:<\/p>\n<ul>\n<li>Facade Pattern<\/li>\n<li>Bridge Pattern<\/li>\n<li>Composite Pattern<\/li>\n<li>Decorator Pattern<\/li>\n<li>Adapter Pattern<\/li>\n<li>Flyweight Pattern<\/li>\n<li>Proxy Pattern<\/li>\n<li>Filter Pattern<\/li>\n<\/ul>\n<p><strong>Facade Design Pattern<\/strong>: Describes a\u00a0higher-level\u00a0interface that makes the subsystem easier to use. Every\u00a0Abstract Factory\u00a0is a Facade Design Pattern.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/bit.ly\/3ELmCiA\" target=\"_blank\" rel=\"noopener\"><strong>Learn to code from industry experts! Enroll here<\/strong><\/a><\/p>\n<p><strong>Advantages:<\/strong><\/p>\n<ul>\n<li>It protects the end-users from the complex sub-system components.<\/li>\n<\/ul>\n<p><strong>Adapter Design Pattern<\/strong>: Provides the\u00a0interface\u00a0according to client requirement while using the services of a class with a\u00a0different interface<strong>.<\/strong>\u00a0The Adapter Pattern is also known as\u00a0Wrapper<strong>.<\/strong><\/p>\n<p><strong>Advantages:<\/strong><\/p>\n<ul>\n<li>It is designed to enable two or more previously incompatible objects to\u00a0interact\u00a0with each other.<\/li>\n<\/ul>\n<h3><strong>Behavioural Design Patterns\u00a0<\/strong><\/h3>\n<p>They are concerned with the responsibility and\u00a0interaction\u00a0between the objects. These Design Patterns make sure the objects are\u00a0loosely coupled<strong>,<\/strong>\u00a0yet, can easily communicate with each other. Behavioural\u00a0Design Patterns are further classified as follows:<\/p>\n<ul>\n<li>Chain Of Responsibility Pattern<\/li>\n<li>Strategy Pattern<\/li>\n<li>Interpreter Pattern<\/li>\n<li>Iterator Pattern<\/li>\n<li>Mediator Pattern<\/li>\n<li>Memento Pattern<\/li>\n<li>Command Pattern<\/li>\n<li>State Pattern<\/li>\n<li>Observer Pattern<\/li>\n<li>Template Pattern<\/li>\n<li>Visitor Pattern<\/li>\n<\/ul>\n<p><strong>Strategy Design Pattern<\/strong>: It defines a family of\u00a0functionality\u00a0and\u00a0encapsulates\u00a0each one, and make them\u00a0interchangeable<strong>.<\/strong>\u00a0The Strategy Pattern is also known as\u00a0Policy.<\/p>\n<p><strong>Advantages:<\/strong><\/p>\n<ul>\n<li>It is designed to provide a substitute for sub-classes.<\/li>\n<\/ul>\n<p><strong>Command Design Pattern<\/strong>: It\u00a0encapsulates\u00a0a request under an object as a command and passes it to the\u00a0invoker object<strong>.<\/strong>\u00a0Invoker object looks for the appropriate object which can handle this command and pass the command to the corresponding object and that object executes the command. It is also known as\u00a0Action\u00a0or\u00a0Transaction.<\/p>\n<p><strong>Advantages:<\/strong><\/p>\n<ul>\n<li>It separates the object that\u00a0invokes\u00a0the operation with the object that\u00a0actually performs the operation.<\/li>\n<\/ul>\n<p><strong>Observer Design Pattern<\/strong>: It defines a\u00a0one-to-one\u00a0dependency so that when one object changes state, all its dependents are notified and updated automatically. The Memento pattern is also known as\u00a0Dependents\u00a0or\u00a0Publish-Subscribe<strong>.<\/strong><\/p>\n<p><strong>Advantages:<\/strong><\/p>\n<ul>\n<li>It illustrates the coupling between the\u00a0objects\u00a0and the\u00a0observer.<\/li>\n<li>It provides support for\u00a0broadcast-type\u00a0communication.<\/li>\n<\/ul>\n<h3><strong>JEE Design Patterns<\/strong><\/h3>\n<p>They<strong>\u00a0<\/strong>are concerned with providing solutions to the\u00a0Java EE-based\u00a0software applications and frameworks. These patterns are widely used in\u00a0Spring.\u00a0JEE Design Patterns are further classified as follows:<\/p>\n<ul>\n<li>MVC Design Pattern<\/li>\n<li>Dependency Injection Pattern<\/li>\n<li>DAO Design Pattern<\/li>\n<li>Business Delegate Pattern<\/li>\n<li>Intercepting Filter Pattern<\/li>\n<li>Service Locator Pattern<\/li>\n<li>Transfer Object Pattern<\/li>\n<\/ul>\n<p><strong>MVC Design Pattern<\/strong>: MVC Design Pattern is defined as follows:<\/p>\n<ul>\n<li><strong>Models<\/strong>\u00a0are basically objects used as blueprints for all of the objects that will be used in the application.<\/li>\n<li><strong>Views<\/strong>\u00a0are used to\u00a0represent the presentational aspect of the information and data located in the models.<\/li>\n<li><strong>Controllers<\/strong>\u00a0control and act as both of the Models as well as Views. They serve as a connection between the Models and Views. Controllers are capable to instantiate, update and delete models. They load them with information and then send the data to the views to present to the end-user.<\/li>\n<\/ul>\n<p><strong>Advantages:<\/strong><\/p>\n<ul>\n<li>It support\u00a0multiple views\u00a0for a model.<\/li>\n<\/ul>\n<p><strong>DAO Design Pattern<\/strong>: DAO is a pattern in which objects are dedicated to the communication with the\u00a0Data Layer.\u00a0These objects instantiate\u00a0\u201cSessionFactories\u201d\u00a0and handle all of the logic behind communicating with the database.<\/p>\n<p><strong>Advantages:<\/strong><\/p>\n<ul>\n<li>It uses common calls to\u00a0retrieve objects.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Overview_of_Design_Patterns\"><\/span><strong>Overview of Design Patterns<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Java Design Patterns are designed to be\u00a0reusable\u00a0in multiple projects.<\/li>\n<li>They furnish solutions that help to define\u00a0system architecture\u00a0with ease.<\/li>\n<li>Design Patterns are capable to capture the software engineering experiences.<\/li>\n<li>They provide\u00a0transparency\u00a0to the design of an application.<\/li>\n<li>Design Patterns are provided by\u00a0Expert Developers\u00a0which prove that these are testified and\u00a0well-proven\u00a0solutions.<\/li>\n<li>Java Design Patterns provide\u00a0clarity\u00a0to the\u00a0System Architecture\u00a0and provide the possibility of building a\u00a0better system.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><strong><a href=\"https:\/\/bit.ly\/3ELmCiA\" target=\"_blank\" rel=\"noopener\">Grab the opportunity to learn Python with Entri! Click Here<\/a><\/strong><\/p>\n<p><strong>Why is it important to choose Entri?<\/strong><\/p>\n<ul>\n<li>Excellent online platform for all the Competitive Exams.<\/li>\n<li>Provides updated materials created by the Entri Experts.<\/li>\n<li>Entri provides a best platform with full- length mock tests including previous year question papers.<\/li>\n<li>You can download the app for free and join the required classes.<\/li>\n<li>Entri wishes you all the best for your examinations and future endeavours.<\/li>\n<\/ul>\n<p><strong>\u201cYOU DON\u2019T HAVE TO BE GREAT TO START, BUT YOU HAVE TO START TO BE GREAT.\u201d<\/strong><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Design patterns\u00a0are general solutions to routine problems in software\u00a0design. Every\u00a0pattern\u00a0acts as a\u00a0blueprint\u00a0that allows customization\u00a0to solve a given\u00a0design\u00a0problem in any code during the development of software modules. Learn Coding in your Language! Enroll Here! A\u00a0design pattern\u00a0systematically names,\u00a0motivates\u00a0and explains a\u00a0general design\u00a0that addresses a recurring design problem in\u00a0object-oriented systems.\u00a0Design patterns\u00a0are needed to represent some of the best practices [&hellip;]<\/p>\n","protected":false},"author":55,"featured_media":25536530,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[802,558,1882],"tags":[],"class_list":["post-25536528","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","category-general-knowledge","category-java-programming"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A Detailed Study on Functional Patterns in Java - Entri Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Detailed Study on Functional Patterns in Java - Entri Blog\" \/>\n<meta property=\"og:description\" content=\"Design patterns\u00a0are general solutions to routine problems in software\u00a0design. Every\u00a0pattern\u00a0acts as a\u00a0blueprint\u00a0that allows customization\u00a0to solve a given\u00a0design\u00a0problem in any code during the development of software modules. Learn Coding in your Language! Enroll Here! A\u00a0design pattern\u00a0systematically names,\u00a0motivates\u00a0and explains a\u00a0general design\u00a0that addresses a recurring design problem in\u00a0object-oriented systems.\u00a0Design patterns\u00a0are needed to represent some of the best practices [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/\" \/>\n<meta property=\"og:site_name\" content=\"Entri Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/entri.me\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-03T20:22:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-23T09:22:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png\" \/>\n\t<meta property=\"og:image:width\" content=\"820\" \/>\n\t<meta property=\"og:image:height\" content=\"615\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ayesha Surayya\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@entri_app\" \/>\n<meta name=\"twitter:site\" content=\"@entri_app\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ayesha Surayya\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/\"},\"author\":{\"name\":\"Ayesha Surayya\",\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/person\/568cc9d6e77fd5d01033b61c88343097\"},\"headline\":\"A Detailed Study on Functional Patterns in Java\",\"datePublished\":\"2022-08-03T20:22:32+00:00\",\"dateModified\":\"2022-11-23T09:22:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/\"},\"wordCount\":1264,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/entri.app\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png\",\"articleSection\":[\"Articles\",\"General Knowledge\",\"Java Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/\",\"url\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/\",\"name\":\"A Detailed Study on Functional Patterns in Java - Entri Blog\",\"isPartOf\":{\"@id\":\"https:\/\/entri.app\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png\",\"datePublished\":\"2022-08-03T20:22:32+00:00\",\"dateModified\":\"2022-11-23T09:22:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#primaryimage\",\"url\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png\",\"contentUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png\",\"width\":820,\"height\":615,\"caption\":\"A Detailed Study on Functional Patterns in Java\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/entri.app\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Entri Skilling\",\"item\":\"https:\/\/entri.app\/blog\/category\/entri-skilling\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Java Programming\",\"item\":\"https:\/\/entri.app\/blog\/category\/entri-skilling\/java-programming\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"A Detailed Study on Functional Patterns in Java\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/entri.app\/blog\/#website\",\"url\":\"https:\/\/entri.app\/blog\/\",\"name\":\"Entri Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/entri.app\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/entri.app\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/entri.app\/blog\/#organization\",\"name\":\"Entri App\",\"url\":\"https:\/\/entri.app\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png\",\"contentUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png\",\"width\":989,\"height\":446,\"caption\":\"Entri App\"},\"image\":{\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/entri.me\/\",\"https:\/\/x.com\/entri_app\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/person\/568cc9d6e77fd5d01033b61c88343097\",\"name\":\"Ayesha Surayya\",\"url\":\"https:\/\/entri.app\/blog\/author\/ayesha-surayya\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Detailed Study on Functional Patterns in Java - Entri Blog","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:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/","og_locale":"en_US","og_type":"article","og_title":"A Detailed Study on Functional Patterns in Java - Entri Blog","og_description":"Design patterns\u00a0are general solutions to routine problems in software\u00a0design. Every\u00a0pattern\u00a0acts as a\u00a0blueprint\u00a0that allows customization\u00a0to solve a given\u00a0design\u00a0problem in any code during the development of software modules. Learn Coding in your Language! Enroll Here! A\u00a0design pattern\u00a0systematically names,\u00a0motivates\u00a0and explains a\u00a0general design\u00a0that addresses a recurring design problem in\u00a0object-oriented systems.\u00a0Design patterns\u00a0are needed to represent some of the best practices [&hellip;]","og_url":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/","og_site_name":"Entri Blog","article_publisher":"https:\/\/www.facebook.com\/entri.me\/","article_published_time":"2022-08-03T20:22:32+00:00","article_modified_time":"2022-11-23T09:22:03+00:00","og_image":[{"width":820,"height":615,"url":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png","type":"image\/png"}],"author":"Ayesha Surayya","twitter_card":"summary_large_image","twitter_creator":"@entri_app","twitter_site":"@entri_app","twitter_misc":{"Written by":"Ayesha Surayya","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#article","isPartOf":{"@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/"},"author":{"name":"Ayesha Surayya","@id":"https:\/\/entri.app\/blog\/#\/schema\/person\/568cc9d6e77fd5d01033b61c88343097"},"headline":"A Detailed Study on Functional Patterns in Java","datePublished":"2022-08-03T20:22:32+00:00","dateModified":"2022-11-23T09:22:03+00:00","mainEntityOfPage":{"@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/"},"wordCount":1264,"commentCount":0,"publisher":{"@id":"https:\/\/entri.app\/blog\/#organization"},"image":{"@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#primaryimage"},"thumbnailUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png","articleSection":["Articles","General Knowledge","Java Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/","url":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/","name":"A Detailed Study on Functional Patterns in Java - Entri Blog","isPartOf":{"@id":"https:\/\/entri.app\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#primaryimage"},"image":{"@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#primaryimage"},"thumbnailUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png","datePublished":"2022-08-03T20:22:32+00:00","dateModified":"2022-11-23T09:22:03+00:00","breadcrumb":{"@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#primaryimage","url":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png","contentUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/08\/A-Detailed-Study-on-Functional-Patterns-in-Java.png","width":820,"height":615,"caption":"A Detailed Study on Functional Patterns in Java"},{"@type":"BreadcrumbList","@id":"https:\/\/entri.app\/blog\/a-detailed-study-on-functional-patterns-in-java\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/entri.app\/blog\/"},{"@type":"ListItem","position":2,"name":"Entri Skilling","item":"https:\/\/entri.app\/blog\/category\/entri-skilling\/"},{"@type":"ListItem","position":3,"name":"Java Programming","item":"https:\/\/entri.app\/blog\/category\/entri-skilling\/java-programming\/"},{"@type":"ListItem","position":4,"name":"A Detailed Study on Functional Patterns in Java"}]},{"@type":"WebSite","@id":"https:\/\/entri.app\/blog\/#website","url":"https:\/\/entri.app\/blog\/","name":"Entri Blog","description":"","publisher":{"@id":"https:\/\/entri.app\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/entri.app\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/entri.app\/blog\/#organization","name":"Entri App","url":"https:\/\/entri.app\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png","contentUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png","width":989,"height":446,"caption":"Entri App"},"image":{"@id":"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/entri.me\/","https:\/\/x.com\/entri_app"]},{"@type":"Person","@id":"https:\/\/entri.app\/blog\/#\/schema\/person\/568cc9d6e77fd5d01033b61c88343097","name":"Ayesha Surayya","url":"https:\/\/entri.app\/blog\/author\/ayesha-surayya\/"}]}},"_links":{"self":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts\/25536528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/comments?post=25536528"}],"version-history":[{"count":4,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts\/25536528\/revisions"}],"predecessor-version":[{"id":25548014,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts\/25536528\/revisions\/25548014"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/media\/25536530"}],"wp:attachment":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/media?parent=25536528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/categories?post=25536528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/tags?post=25536528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}