---
title: Design Pattern Combination – Strategy with Factory Method
description: Design Pattern Combination – Strategy with Factory Method
image: https://blog.e-zest.com/hs-fs/file-3586008885-png/blog-files/strategy-design-pattern.png
---

[![e-Zest logo\_An accion lab company\_Colour](https://blog.e-zest.com/hubfs/images/Logos%20with%20Tagline/Corporate/SVG/e-Zest%20logo_An%20accion%20lab%20company_Colour.svg "e-Zest logo_An accion lab company_Colour")](https://www.e-zest.com/)

- [WORK](https://www.e-zest.com/our-work)
- [SERVICES](https://www.e-zest.com/our-services) 
    - [Product Engineering](https://www.e-zest.com/digital-product-engineering-services)
    - [Enterprise Data Services](https://www.e-zest.com/enterprise-data-services)
    - [Digital Commerce](https://www.e-zest.com/digital-commerce-services)
    - [Digital Operations](https://www.e-zest.com/digital-operations)
    - [Digital Consulting](https://www.e-zest.com/digital-transformation-consulting-services)
    - [Digital Experience Design](https://www.e-zest.com/digital-experience-design)
- [INSIGHTS](https://blog.e-zest.com/)
- [CAREERS](https://www.e-zest.com/careers)
- [ENTERPRISE DATA SERVICES](https://www.e-zest.com/enterprise-data-services)
- [GENERATIVE AI](https://www.e-zest.com/generative-ai)
- [Healthcare](https://healthcare.e-zest.com)
- [Contact Us](https://www.e-zest.com/contact-us)

- ![Elevating Product Engineering with AI and ML](https://blog.e-zest.com/hubfs/Elevating%20Product%20Engineering%20with%20AI%20and%20ML.jpg)

  [BLOGS](https://blog.e-zest.com)
  
  #### Elevating Product Engineering with AI and ML

  As technology evolves and customer choices broaden, there is an increasing ...

  [Read more](https://blog.e-zest.com/elevating-product-engineering-with-ai-and-ml)
- ![e-Zest – An Accion Labs Company gets Recognition as a Contender in the ISG Provider Lens™ Study on Digital Engineering Services 2024](https://blog.e-zest.com/hubfs/e-Zest%20%E2%80%93%20An%20Accion%20Labs%20Company%20-%20Gets%20Recognition%20as%20a%20Contender%20in%20the%20ISG%20Provider%20LensTM%20Study%20on%20Digital%20Engineering%20Services%202024.jpg)

  [NEWS](https://blog.e-zest.com/news)
  
  #### e-Zest – An Accion Labs Company gets Recognition as a Contender in the ISG Provider Lens™ Study on Digital Engineering Services 2024

  We are delighted to announce that e-Zest – An Accion Labs Company has been ...

  [Read more](https://blog.e-zest.com/news/e-zest-an-accion-labs-company-gets-recognition-as-a-contender-in-the-isg-provider-lens-study-on-digital-engineering-services-2024)
- ![e-Zest Solutions supports Digital Pune Mission](https://blog.e-zest.com/hubfs/blog-files/Digital%20Literacy%20Bus%20e-Zest.png)

  [CSR](https://blog.e-zest.com/csr)
  
  #### e-Zest Solutions supports Digital Pune Mission

  **Pune, India:** e-Zest Solutions, a leading digital technology innovation ...

  [Read more](https://blog.e-zest.com/csr/e-zest-solutions-supports-digital-pune-mission)

- [Work](https://www.e-zest.com/our-work)
- [Services](https://www.e-zest.com/our-services)
- [Insights](https://blog.e-zest.com)
- [Careers](https://www.e-zest.com/careers)
- [Enterprise Data](https://www.e-zest.com/enterprise-data-services)
- [Generative AI](https://www.e-zest.com/generative-ai)
- [Innovations](https://www.e-zest.com/innovations)
- [Healthcare](https://healthcare.e-zest.com)
- [About](https://www.e-zest.com/about-us)
- [Contact](https://www.e-zest.com/contact-us)

- [Blog](https://blog.e-zest.com/)
- [News](https://blog.e-zest.com/news)
- [CSR](https://blog.e-zest.com/csr)

- [![Linkedin Icon](https://blog.e-zest.com/hubfs/icons/linkedin_icon_white.svg)](https://www.linkedin.com/company/e-zest-solutions/)
- [![Twitter Icon](https://blog.e-zest.com/hubfs/twitter-logo-silhouette%20(5).svg)](https://twitter.com/ezest)
- [![Facebook Icon](https://blog.e-zest.com/hubfs/facebook-app-logo%20(4).svg)](https://www.facebook.com/61259256638)
- [![Instagram Icon](https://blog.e-zest.com/hubfs/instagram-logo%20(4).svg)](https://www.instagram.com/ezestsolutions/)
- [![Youtube Icon](https://blog.e-zest.com/hubfs/icons/youtube_icon_white.svg)](https://www.youtube.com/user/ezestcorporate)

[![Go to top icon](https://blog.e-zest.com/hubfs/AA%20Assets/top%20button.svg)](https://blog.e-zest.com/design-pattern-combination-strategy-with-factory-method/#top)

Hit enter to search or ESC to close

Insights

e-Zest members share technology ideas to foster digital transformation.

- [Blog](https://blog.e-zest.com)
- [News](https://blog.e-zest.com/news)
- [Podcasts](https://www.e-zest.com/podcasts)
- [Healthcare](https://blog.e-zest.com/healthcare)
- [CSR](https://blog.e-zest.com/csr)
- [Whitepaper](https://blog.e-zest.com/whitepaper)
- [Playbook](https://blog.e-zest.com/playbook)
- [Media Kit](https://www.e-zest.com/media-kit)

# Design Pattern Combination – Strategy with Factory Method

[Madhura Oak](https://blog.e-zest.com/author/madhura-oak)  Aug 07, 2013

[Java](https://blog.e-zest.com/topic/java) [Factory Method](https://blog.e-zest.com/topic/factory-method) [Strategy](https://blog.e-zest.com/topic/strategy) [Design Patterns](https://blog.e-zest.com/topic/design-patterns) [GoF](https://blog.e-zest.com/topic/gof) [Technology](https://blog.e-zest.com/topic/technology)

- <https://www.linkedin.com/shareArticle?mini=true&url=https://blog.e-zest.com/design-pattern-combination-strategy-with-factory-method/&title=&summary=&source=>
- <https://twitter.com/intent/tweet?source=https://blog.e-zest.com/design-pattern-combination-strategy-with-factory-method/&text=Design%20Pattern%20Combination%20–%20Strategy%20with%20Factory%20Method>
- <https://www.facebook.com/sharer/sharer.php?u=https://blog.e-zest.com/design-pattern-combination-strategy-with-factory-method/>
- <https://www.instagram.com/ezestsolutions/?u=https://blog.e-zest.com/design-pattern-combination-strategy-with-factory-method/>

When we implement certain design patterns, they are usually used in combination with other design pattern. Though we have a catalog of design patterns such as Gang of Four (GoF), we do not have a formal specification which mandates the use of such a design pattern along with its related pattern.

In this blog, I’m going to write about one such design pattern – Strategy. It is always useful to implement Strategy along with Factory Method. Both Strategy and Factory Method are Gang of Four (GoF) design patterns.

Strategy design pattern allows selection of an algorithm’s behaviour during runtime. An example of Strategy is shown in Figure 1.

\[imageframe style="border" bordercolor="" bordersize="4px" stylecolor="" align=""\]

[![Strategy design pattern](https://blog.e-zest.com/hs-fs/file-3586008885-png/blog-files/strategy-design-pattern.png?width=567&height=239&name=strategy-design-pattern.png)](https://blog.e-zest.com/wp-content/uploads/2013/08/Strategy-design-pattern.png)

\[/imageframe\]

Figure 1. Strategy design pattern

The DocumentExtractor class will need a code shown in Listing 1 to call the appropriate implementation of StatementExtractor based on the type of document.

```
StatementExtractor extractor = null;
if(type.equals(“BankAccountStatement”)) {
   extractor = new BankAccountStatementExtractor();
}
else if(type.equals(“CreditCardStatement”)) {
   extractor = new CreditCardStatementExtractor();
}
extractor.extract(statement);
```

Listing 1. Call the appropriate implementation based on document type

When a Strategy design pattern is implemented, such code to use the appropriate implementation class is always required. Instead of embedding this code directly in the class which calls the algorithm, a better approach is to decouple this code into another class which implements Factory method.

 Thus, the design in Figure 1 can be modified by adding the Factory method design pattern as shown in Figure 2.

[![Strategy with Factory Method design pattern](https://blog.e-zest.com/hs-fs/file-3586008895-png/blog-files/strategy-with-factory-method-design-pattern.png?width=633&height=220&name=strategy-with-factory-method-design-pattern.png)](https://blog.e-zest.com/wp-content/uploads/2013/08/Strategy-with-Factory-Method-design-pattern.png)

Figure 2. Strategy with Factory Method design pattern

The code to use the appropriate implementation of StatementExtractor based on document type is now present in StatementExtractorFactory as shown in Listing 2. The factory class is used by DocumentExtractor as shown in Listing 3.

```
public class StatementExtractorFactory {

     private static Map <String,StatementExtractor> extractors =
                 new HashMap<>();
      static {
            extractors.put(“BankAccountStatement”,
                     new BankAccountStatementExtractor());
            extractors.put(“CreditCardStatement”,
                     new CreditCardStatementExtractor());
      }
      public static StatementExtractor getInstance(String type) {
            return extractors.get(type);
      }
}
```

Listing 2. StatementExtractorFactory

```
public class DocumentExtractor {
     public void extractDocument() {
       …
       StatementExtractor extractor =
              StatementExtractorFactory.getInstance(type);
       extractor.extract(statement);
       …
    }
}
```

Listing 3. DocumentExtractor

A Factory class can create new instances in a multithreaded application.

Thus, the Strategy design pattern should always be implemented with Factory Method design pattern.

- <https://twitter.com/intent/tweet?source=https://blog.e-zest.com/design-pattern-combination-strategy-with-factory-method/&text=Design%20Pattern%20Combination%20–%20Strategy%20with%20Factory%20Method>
- <https://www.facebook.com/sharer/sharer.php?u=https://blog.e-zest.com/design-pattern-combination-strategy-with-factory-method/>
- <https://www.linkedin.com/shareArticle?mini=true&url=https://blog.e-zest.com/design-pattern-combination-strategy-with-factory-method/&title=&summary=&source=>

### Similar Blog

[![How to Create Own Custom JMeter Template?](https://blog.e-zest.com/hubfs/How%20to%20Create%20Own%20Custom%20JMeter%20Template%201280x667%202560x1334.jpg) How to Create Own Custom JMeter Template? We frequently need to construct Test Plans with a similar format when working on web application performance testing using Apache ... By Kishore Bhamare Feb 28, 2023](https://blog.e-zest.com/how-to-create-own-custom-jmeter-template)

[![Hoisting in JavaScript](https://blog.e-zest.com/hubfs/Blog_Files/Hoisting%20in%20JavaScript-190225.png) Hoisting in JavaScript Generally, we all have heard of the term ‘hoisting’ with reference to flag hoisting. By Ajit Sakhare Feb 26, 2019](https://blog.e-zest.com/hoisting-in-javascript)

[![OWASP ZAP Modes](https://blog.e-zest.com/hubfs/OWASP%20ZAP%202.5.0.png) OWASP ZAP Modes OWASP ZAP is an open-source web security testing tool, used for detecting vulnerabilities in web applications.ZAP provides you ... By Kishore Bhamare Dec 22, 2016](https://blog.e-zest.com/owasp-zap-modes)

[![Automation using Selenium WebDriver Frameworks](https://blog.e-zest.com/hubfs/Selenium_blog_image.png) Automation using Selenium WebDriver Frameworks Frameworks help to structure our code and make the maintenance process easy. Without frameworks we will place all our code and ... By Uddhav Naik Sep 26, 2016](https://blog.e-zest.com/automation-using-selenium-webdriver-frameworks)

[Tutorial: Elasticsearch Integration in a Java Application The whole world relies on search to get access to relevant information and data. Handling this large amount of data presents a ... By Jyoti Agrawal Jun 11, 2015](https://blog.e-zest.com/tutorial-elasticsearch-integration-in-a-java-application/)

[Oracle NoSQL Database (ONDB) Relational databases have been around us for more than 20 years now. Needless to say, they are mature and an obvious choice for ... By Madhura Oak Dec 24, 2013](https://blog.e-zest.com/oracle-nosql-database-ondb/)

[Session State Isolation Techniques Isolation of data in a session is the trickiest part of session management. A session may constitute of multiple requests. ... By Madhura Oak Dec 02, 2013](https://blog.e-zest.com/session-state-isolation-techniques/)

[Session Management There are three ways of session management in n-tier applications: By Madhura Oak Nov 27, 2013](https://blog.e-zest.com/session-management/)

[Transaction and Query timeout Performance is one of the non-functional requirements of an application. It defines the acceptable maximum response time for ... By Madhura Oak Nov 25, 2013](https://blog.e-zest.com/transaction-and-query-timeout/)

[![Multiple Inheritance in Domain Model Design](https://blog.e-zest.com/hs-fs/file-3586010320-png/blog-files/uml-class-diagram-%E2%80%93-bridge-pattern.png) Multiple Inheritance in Domain Model Design While using multiple inheritance in domain model design you need to be cautious as programming languages such as Java do not ... By Madhura Oak Nov 13, 2013](https://blog.e-zest.com/multiple-inheritance-in-domain-model-design/)

## Helping Organizations Thrive in the Digital Age

[Contact Us](https://www.e-zest.com/contact-us)

- [About](https://www.e-zest.com/about-us)
- [Services](https://www.e-zest.com/our-services)
- [Work](https://www.e-zest.com/our-work)
- [Insights](https://blog.e-zest.com/)
- [Healthcare](https://healthcare.e-zest.com/)
- [Accion Labs](https://www.accionlabs.com/)

- <https://www.linkedin.com/company/e-zest-solutions/>
- <https://twitter.com/ezest>
- <https://www.facebook.com/eZest/>
- <https://www.instagram.com/ezestsolutions/>
- <https://www.youtube.com/user/ezestcorporate>

- Dallas
- Detroit
- Hannover
- Vienna
- London
- Pune

 © 2025 e-Zest Solutions

- [Privacy Policy](https://www.e-zest.com/privacypolicy)
- [Cookie Policy](https://www.e-zest.com/cookie-policy)

 Contact us

 Contact us

e-Zest is a leading digital innovation partner for enterprises and technology companies that utilizes emerging technologies for creating engaging customers experiences. Being a customer-focused and technology-driven company, it always helps clients in crafting holistic business value for their software development efforts. It offers software development and consulting services for cloud computing, enterprise mobility, big data and analytics, user experience and digital commerce.