JavaScript Factory Pattern erklärt

JavaScript Factory Pattern erklärt

Einfache Fabrik

Bildbeschreibung hier einfügen

//Basketball-Basisklasse var Basketball = function() {
    this.intro = „Basketball ist in den Vereinigten Staaten beliebt“;
}
Basketball.prototyp = {
    getMember: Funktion() {
        console.log('Jedes Team braucht fünf Spieler');
    },
    getBallSize: Funktion() {
        console.log('Basketball ist sehr groß');
    }
}
//Fußball-Basisklasse var Football = function() {
    this.intro = „Fußball ist auf der ganzen Welt beliebt“;
}
Fußball.Prototyp = {
    getMember: Funktion() {
        console.log('Jedes Team braucht 11 Spieler');
    },
    getBallSize: Funktion() {
        console.log('Der Fußball ist sehr groß');
    }
}
//Sportfabrik var SportsFactory = function(name) {
    Schalter (Name) {
        Fall 'NBA':
            gibt neuen Basketball zurück();
        Fall 'Weltmeisterschaft':
            gibt neuen Football zurück();
    }
}
//Wenn Sie einen Fußball für die Weltmeisterschaft erstellen müssen, denken Sie einfach an die Sportfabrik sportsFactory, rufen Sie sie auf und erstellen Sie var Footnall = SportsFactory('worldCup');
Konsole.log(Footnall);
Konsole.log(Footnall.intro);
Footnall.getMember();

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

//Fabrikmodusfunktion createBook(Name, Zeit, Typ) {
    var o = new Object(); //Ein Objekt erstellen und die Eigenschaften und Methoden des Objekts erweitern //Dies ist der andere Teil o.name = name; //Buchname o.time = time; //Veröffentlichungszeit des Buches o.type = type; //Buchtyp //Das Folgende ist der ähnliche Teil o.getName = function() {
        konsole.log(dieser.name);
    };
    //Gib das Objekt zurück return o;
}
//Zwei Bücher erstellen var book1 = new createBook('JS book', 2021, 'js');
var book2 = new createBook('CSS-Buch', 2019, 'css');
book1.getName();
book2.getName();

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Fabrikmethode

Bildbeschreibung hier einfügen

var Demo = Funktion() {}
Demo.prototyp = {
    anzeigen: function() {
        console.log('erfolgreich erworben');
    }
}
var d = new Demo();//Instanz d.show() korrekt erstellen; //Erfolgreich erhalten var d = Demo();//Fehler beim Erstellen der Instanz d.show(); //Explosion 

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

var Demo = Funktion() {
    if (!this instanceof Demo) {//Beurteilen, worauf dies hinweist return new Demo();
    }
}
Demo.prototyp = {
    anzeigen: function() {
        console.log('Die Klasse für den abgesicherten Modus ist wirklich nützlich');
    }
}
var d = Demo();
d.zeigen();

Bildbeschreibung hier einfügen

Sichere Fabrikmethoden

//Factory-Klasse im abgesicherten Modus erstellen var Factory = function(type, content) {
    wenn (diese Instanz der Factory) {
        var s = neu dieser[Typ](Inhalt);
        Rückgabe s;
    } anders {
        gib eine neue Factory (Typ, Inhalt) zurück;
    }
}
//Basisklasse zum Erstellen aller Arten von Datenobjekten im Factory-Prototyp festlegen Factory.prototype = {
    java: Funktion(Inhalt) {
        //...
    },
    UI: Funktion (Inhalt) {
        dieser.Inhalt = Inhalt;
        (Funktion() {
            var div = document.createElement('div');
            div.innerHTML = Inhalt;
            div.style.border = '1px durchgehend rot';
            document.getElementById('container').appendChild(div);
        })(Inhalt);
    },
    php: Funktion(Inhalt) {
        //...
    },
    javascript: Funktion(Inhalt) {
        //..
    }
};
//Objekt erstellen var data = [
    { Typ: 'Javascript', Inhalt: 'Welches JS ist das beste?' },
    { Typ: 'Java', Inhalt: 'Welches Java ist das beste?' },
    { Typ: 'UI', Inhalt: 'Welche UI ist die beste?' }
];
für (let index = 0; index < data.length; index++) {
    Konsole.log(Daten[Index].Typ);
    Fabrik(Daten[Index].Typ, Daten[Index].Inhalt);
}

Bildbeschreibung hier einfügen

Abstrakte Fabrik

Bildbeschreibung hier einfügen

var Auto = Funktion() {}
Auto.Prototyp = {
    getPrice: Funktion() {
        returniere neuen Fehler('Abstrakte Methode kann nicht aufgerufen werden');
    },
    getSpeed: Funktion() {
        returniere neuen Fehler('Abstrakte Methode kann nicht aufgerufen werden');
    }
};

Bildbeschreibung hier einfügen

//Abstrakte Factory-Methode var VehicleFactory = function(subType, superType) {
    //Beurteilen, ob die abstrakte Klasse in der abstrakten Fabrik existiert, wenn (Typ von VehicleFactory [Supertyp] === 'Funktion') {
        //Cache-Klassenfunktion F() {};
        //Eigenschaften und Methoden der übergeordneten Klasse erben F.prototype = new VehicleFactory[superType]();
        //Richten Sie den Unterklassenkonstruktor auf die Unterklasse subType.constructor = subType;
        //Der Prototyp der Unterklasse erbt die übergeordnete Klasse subType.prototype = new F();
    } anders {
        //Wenn die abstrakte Klasse nicht existiert, werfen Sie einen neuen Fehler (,Die abstrakte Klasse wurde nicht erstellt');
    }
};
//Auto abstrakte Klasse VehicleFactory.Car = function() {
    dieser.Typ = "Auto";
}
FahrzeugFactory.Car.prototype = {
    getPrice: Funktion() {
        returniere neuen Fehler('Abstrakte Methode kann nicht aufgerufen werden');
    },
    getSpeed: Funktion() {
        returniere neuen Fehler('Abstrakte Methode kann nicht aufgerufen werden');
    }
};
//Bus abstrakte Klasse VehicleFactory.Bus = function() {
    dieser.Typ = "Bus";
}
FahrzeugFactory.Bus.prototype = {
    getPrice: Funktion() {
        returniere neuen Fehler('Abstrakte Methode kann nicht aufgerufen werden');
    },
    getPassengerNum: Funktion() {
        returniere neuen Fehler('Abstrakte Methode kann nicht aufgerufen werden');
    }
}

Bildbeschreibung hier einfügen

//Abstrakt und Implementierung//BMW Auto Unterklasse var BMW = function(price, speed) {
    dieser.Preis = Preis;
    this.speed = Geschwindigkeit;
};
//Die abstrakte Factory implementiert die Vererbung der abstrakten Klasse „Car“. VehicleFactory(BMW, „Car“);
BMW.prototype.getPrice = function() { //Methode neu schreiben return this.price;
}
BMW.prototype.getSpeed ​​​​= Funktion() {
    gib diese Geschwindigkeit zurück;
};
//Yutong-Bus-Unterklasse var YUTONG = function(Preis, Passagier) {
    dieser.Preis = Preis;
    this.passenger = Passagier;
};
//Die abstrakte Factory implementiert die Vererbung der abstrakten BUS-Klasse VehicleFactory(YUTONG, 'Bus');
YUTONG.prototype.getPrice = Funktion() {
    gib diesen Preis zurück;
}
YUTONG.prototype.getPassengerNum = Funktion() {
    gib diesen Passagier zurück;
};
//Instanziiere die Klasse var myBMW = new BMW('100w', '1000km/h');
Konsole.log(meinBMW.getPrice(), meinBMW.getSpeed(), meinBMW.type);

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können!

Das könnte Sie auch interessieren:
  • Anwendungsbeispiel für einfachen Factory-Modus von js
  • Definition und Verwendungsanalyse des Factory-Musters und des abstrakten Factory-Musters im JavaScript-Entwurfsmuster
  • JavaScript Design Patterns – Prinzipien und Anwendungsbeispiele einfacher Factory Patterns
  • JavaScript Design Patterns – Factory Pattern Prinzipien und Anwendungsbeispiele
  • JS-Entwurfsmuster: Eine kurze Analyse der Definition und Implementierung des Factory-Musters
  • Teilen Sie die Verwendung von 3 Factory-Mustern in JavaScript

<<:  XHTML: Rahmenstruktur-Tag

>>:  Zusammenfassung der Mysql-Existes-Verwendung

Artikel empfehlen

Kombinieren von XML- und CSS-Stilen

student.xml <?xml version="1.0" enco...

So erstellen Sie eine MySQL-Datenbank (de1) mit Befehlen

1. Verbindung zu MySQL herstellen Format: mysql -...

Kurze Analyse des MySQL B-Tree-Index

B-Baum-Index Verschiedene Speicher-Engines können...

mysql charset=utf8 verstehen Sie wirklich, was es bedeutet

1. Schauen wir uns zunächst eine Anweisung zur Ta...

Erläuterung des Arbeitsmechanismus von Namenode und SecondaryNameNode in Hadoop

1) Prozess 2) FSImage und Bearbeitungen Nodenode ...

Ein kurzes Verständnis der drei Prinzipien zum Hinzufügen von MySQL-Indizes

1. Die Bedeutung von Indizes Indizes werden verwe...

React + Threejs + Swiper vollständiger Code zum Erzielen eines Panoramaeffekts

Schauen wir uns den Panorama-Effekt an: Adresse a...

So legen Sie die UTF-8-Kodierung in einer MySQL-Datenbank fest

Ändern Sie die Datei /etc/my.cnf oder /etc/mysql/...

Front-End-JavaScript-Versprechen

Inhaltsverzeichnis 1. Was ist Promise 2. Grundleg...

Wie MySQL Milliarden von Datenverkehr unterstützt

Inhaltsverzeichnis 1 Master-Slave-Lese-/Schreibtr...

Sortierung und Paginierung von MySQL-Abfragen

Überblick Da wir die Daten normalerweise nicht di...

Lernen Sie die asynchrone Programmierung in Node.js in einem Artikel

Inhaltsverzeichnis Einführung Synchron Asynchron ...