[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]