JavaScript Design Patterns - Creational - Factory


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: