DEV Community

Nhan Nguyen
Nhan Nguyen

Posted on

JavaScript Design Patterns - Creational - Factory

Image description

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;
Enter fullscreen mode Exit fullscreen mode

πŸ‘‰ 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:

Top comments (0)