Qu’est-ce que le Design Pattern Factory

[ad_1]

Design Pattern Factory est un autre modèle de création basé sur la classe. Dans ce cas, nous fournissons une interface générique qui délègue la responsabilité de l’instanciation des objets à ses sous-classes.

Ce modèle est fréquemment utilisé lorsqu’il s’agit de gérer ou de manipuler des collections d’objets qui sont différents mais qui présentent de nombreuses caractéristiques similaires.

Dans cet exemple, nous créons une classe Factory nommée BallFactory qui a une méthode qui prend en compte les paramètres et qui, en fonction des paramètres, délègue la responsabilité de l’instanciation de l’objet à la classe respective. Si le paramètre type est football ou « rugby », l’instanciation de l’objet est gérée par la classe Football mais si c’est basketball l’instanciation de l’objet est gérée par la classe Basketball.

class BallFactory {
  constructor() {
    this.createBall = function(type) {
      let ball;
      if (type === 'football' || type === 'rugby') ball = new Football();
      else if (type === 'basketball') ball = new Basketball();
      ball.roll = function() {
        return `Le ${this._type} roule.`;
      };

      return ball;
    };
  }
}

class Football {
  constructor() {
    this._type="football";
    this.kick = function() {
      return 'Tu as frappé le balon.';
    };
  }
}

class Basketball {
  constructor() {
    this._type="basketball";
    this.bounce = function() {
      return 'Tu as fait rebondir le balon.';
    };
  }
}

// creating objects
const factory = new BallFactory();

const myFootball = factory.createBall('football');
const myBasketball = factory.createBall('basketball');

console.log(myFootball.roll()); // Le football roule.
console.log(myBasketball.roll()); // Le basketball roule.
console.log(myFootball.kick()); // Tu as frappé le balon.
console.log(myBasketball.bounce()); // Tu as fait rebondir le balon.

···

[ad_2]

Nouveau Tutoriel

Newsletter

Ne manquez jamais les nouveaux conseils, tutoriels et autres.

Pas de spam, jamais. Nous ne partagerons jamais votre adresse électronique et vous pouvez vous désabonner à tout moment.