Skip to main content

Command Palette

Search for a command to run...

JavaScript Design Patterns - Creational - Factory

Published
1 min read
N

I'm Nhan. I'm a web developer from Vietnam. I have over 5 years of experience in the Angular framework.


Factory pattern creates new objects delegating which class to instantiate in subclasses.

In the below example, MovieFactory decides what kind of Movie to create.

class MovieFactory {
  create(genre) {
    if (genre === 'Adventure') {
        return new Movie(genre, 10000);
    }
    if (genre === 'Action') {
        return new Movie(genre, 20000);
    }
  }
}
class Movie {
  constructor(type, price) {
    this.type = type;
    this.price = price;
  }
}
export default MovieFactory;

👉 Use this pattern when you want a subclass to decide what object to create.

🚀 Pros:

➖ We avoid tight coupling between the creator and the concrete products.

➖ Single Responsibility Principle. We can move the product creation code into one place in the program, making the code easier to support.

➖ Open/Closed Principle. We can introduce new types of products into the program without breaking existing client code.

⛔ Cons:

➖ The code may become more complicated since We need to introduce a lot of new subclasses to implement the pattern. The best-case scenario is when we’re introducing the pattern into an existing hierarchy of creator classes.


I hope you found it useful. Thanks for reading. 🙏

Let’s get connected! You can find me on:

More from this blog

Nhan Nguyen's blog

88 posts

I’m a web developer, and I am really passionate about learning web development.