Maison > Article > interface Web > Analysez en détail le modèle d'usine abstraite JS pour vous
Cet article résume principalement l'expérience et le résumé de l'auteur lors de l'apprentissage du modèle d'usine abstraite JS. Les amis intéressés peuvent suivre et apprendre.
Voici les problèmes et exemples de code que j'ai rencontrés au cours de mon étude. Enfin, je vais vous donner un résumé de votre apprentissage sur le modèle de fabrique abstraite JS.
Le modèle Abstract Factory (Abstract Factory) utilise l'abstraction de classe pour rendre l'entreprise adaptée à la création d'un cluster de classes de produits sans être responsable des instances d'un certain type de produit.
Il n'y a pas de classe abstraite directe dans JS. Abstract est un mot réservé, mais il n'a pas encore été implémenté. Par conséquent, nous devons générer une erreur dans la méthode de classe pour simuler la classe abstraite. pas de remplacement dans la sous-classe héritée, si vous écrivez cette méthode et l'appelez, une erreur sera générée.
const Car = function() { } Car.prototype.getPrice = function() {return new Error('抽象方法不能调用')}
Implémentation
Il existe un modèle de fabrique abstraite dans les langages orientés objet. Tout d'abord, déclarez une classe abstraite en tant que classe parent. pour résumer certaines fonctionnalités requises par un type de produit. Une sous-classe qui hérite de la classe parent doit implémenter les méthodes déclarées dans la classe parent et réaliser les fonctions déclarées dans la classe parent :
/** * 实现subType类对工厂类中的superType类型的抽象类的继承 * @param subType 要继承的类 * @param superType 工厂类中的抽象类type */ const VehicleFactory = function(subType, superType) { if (typeof VehicleFactory[superType] === 'function') { function F() { this.type = '车辆' } F.prototype = new VehicleFactory[superType]() subType.constructor = subType subType.prototype = new F() // 因为子类subType不仅需要继承superType对应的类的原型方法,还要继承其对象属性 } else throw new Error('不存在该抽象类') } VehicleFactory.Car = function() { this.type = 'car' } VehicleFactory.Car.prototype = { getPrice: function() { return new Error('抽象方法不可使用') }, getSpeed: function() { return new Error('抽象方法不可使用') } } const BMW = function(price, speed) { this.price = price this.speed = speed } VehicleFactory(BMW, 'Car') // 继承Car抽象类 BMW.prototype.getPrice = function() { // 覆写getPrice方法 console.log(`BWM price is ${this.price}`) } BMW.prototype.getSpeed = function() { console.log(`BWM speed is ${this.speed}`) } const baomai5 = new BMW(30, 99) baomai5.getPrice() // BWM price is 30 baomai5 instanceof VehicleFactory.Car // true
Résumé
Grâce à l'usine abstraite, vous pouvez créer des produits d'un certain cluster de classes, et vous pouvez également utiliser instanceof pour vérifier la catégorie de produits, et également disposer des méthodes nécessaires pour ce cluster de classes.
Ce qui précède est ce que j'ai compilé pour vous. J'espère que cela vous sera utile à l'avenir.
Articles connexes :
Résumé de trois façons de charger dynamiquement des fichiers JS
js prend en charge le cross-post request Résumé des méthodes de domaine
Vue.jsExplication détaillée du calcul et de l'utilisation des propriétés d'écoute
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!