Méthode d’usine

Résumé

Une méthode d’usine crée de nouveaux objets selon les instructions du client. Une façon de créer des objets en JavaScript consiste à appeler une fonction constructeur avec le nouvel opérateur. Il existe cependant des situations où le client ne sait pas ou ne devrait pas savoir lequel des plusieurs objets candidats à instancier. La méthode Factory permet au client de déléguer la création d’objets tout en conservant le contrôle sur le type à instancier.

L’objectif clé de la méthode d’usine est l’extensibilité. Les méthodes d’usine sont fréquemment utilisées dans les applications qui gèrent, maintiennent ou manipulent des collections d’objets différents mais qui ont en même temps de nombreuses caractéristiques (c’est-à-dire des méthodes et des propriétés) en commun. Un exemple serait une collection de documents avec un mélange de documents Xml, de documents Pdf et de documents Rtf.

Diagramme

Diagramme Modèle de conception de méthode d'usine JavaScript

Participants

Les objets participant à ce modèle sont:

  • Créateur — Dans un exemple de code: Factory
    • l’objet ‘factory’ qui crée de nouveaux produits
    • implémente ‘factoryMethod’ qui renvoie des produits nouvellement créés
  • AbstractProduct not non utilisé en JavaScript
    • déclare une interface pour les produits
  • ConcreteProduct In Dans un exemple de code : Employés
    • le produit en cours de création
    • tous les produits prennent en charge la même interface (propriétés et méthodes)

Exemple de code en JavaScript

Dans cet exemple JavaScript, l’objet Factory crée quatre types d’employés différents. Chaque type d’employé a un taux horaire différent. La méthode createEmployee est la méthode d’usine réelle. Le client indique à l’usine quel type d’employé créer en passant un argument de type dans la méthode Factory.

Le produit abstrait dans le diagramme n’est pas implémenté car Javascript ne prend pas en charge les classes ou les interfaces abstraites. Cependant, nous devons toujours nous assurer que tous les types d’employés ont la même interface (propriétés et méthodes).

Quatre types d’employés différents sont créés ; tous sont stockés dans le même tableau. Chaque employé est invité à dire ce qu’il est et son taux horaire.

La fonction log est une aide qui collecte et affiche les résultats.

function Factory() { this.createEmployee = function (type) { var employee; if (type === "fulltime") { employee = new FullTime(); } else if (type === "parttime") { employee = new PartTime(); } else if (type === "temporary") { employee = new Temporary(); } else if (type === "contractor") { employee = new Contractor(); } employee.type = type; employee.say = function () { log.add(this.type + ": rate " + this.hourly + "/hour"); } return employee; }}var FullTime = function () { this.hourly = "$12";};var PartTime = function () { this.hourly = "$11";};var Temporary = function () { this.hourly = "$10";};var Contractor = function () { this.hourly = "$15";};// log helpervar log = (function () { var log = ""; return { add: function (msg) { log += msg + "\n"; }, show: function () { alert(log); log = ""; } }})();function run() { var employees = ; var factory = new Factory(); employees.push(factory.createEmployee("fulltime")); employees.push(factory.createEmployee("parttime")); employees.push(factory.createEmployee("temporary")); employees.push(factory.createEmployee("contractor")); for (var i = 0, len = employees.length; i Run 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.