Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Definition, Klassifizierung und Anwendungsbeispiele des Fabrikmusters von JavaScript-Entwurfsmustern

Detaillierte Erläuterung der Definition, Klassifizierung und Anwendungsbeispiele des Fabrikmusters von JavaScript-Entwurfsmustern

伊谢尔伦
伊谢尔伦Original
2017-07-24 13:57:111889Durchsuche

Konzept: Definition des Fabrikmusters: Stellt eine Schnittstelle zum Erstellen von Objekten bereit, was bedeutet, dass entsprechende Produkte (Objekte) gemäß den Anweisungen (Parametern) des Leiters (Aufrufers) hergestellt werden.

Das Erstellen eines Objekts erfordert oft einen komplexen Prozess und ist daher nicht für ein komplexes Objekt geeignet.

Das Erstellen von Objekten kann zu einer starken Codeduplizierung führen und bietet möglicherweise kein ausreichendes Abstraktionsniveau.

Eine Fabrik überträgt die Erstellung von Mitgliedsobjekten auf ein externes Objekt. Der Vorteil besteht darin, die Kopplung (dh die gegenseitige Beeinflussung) zwischen Objekten zu beseitigen

Kategorie:

Einfaches Factory-Muster: Verwenden Sie eine Klasse, normalerweise einen Singleton, um Instanzen zu generieren.

Komplexes Fabrikmuster Die Definition lautet: Pushen Sie die Instanziierung ihrer Mitgliedsobjekte an die Unterklasse, und die Unterklasse kann die Schnittstellenmethode der übergeordneten Klasse überschreiben, um sie zu erstellen Ihr eigener Objekttyp.

Die übergeordnete Klasse behandelt nur allgemeine Probleme während des Erstellungsprozesses wird von den Unterklassen geerbt und die Unterklassen sind unabhängig voneinander , insbesondere Business Logik wird in Unterklassen geschrieben.

Code-Implementierung:

Einfaches Fabrikmuster:  


var XMLHttpFactory =function(){};      //这是一个简单工厂模式
  XMLHttpFactory.createXMLHttp =function(){
    var XMLHttp = null;
    if (window.XMLHttpRequest){
      XMLHttp = new XMLHttpRequest()
    }else if (window.ActiveXObject){
      XMLHttp = new ActiveXObject("Microsoft.XMLHTTP")
    }
  return XMLHttp;
  }
  //XMLHttpFactory.createXMLHttp()这个方法根据当前环境的具体情况返回一个XHR对象。
  var AjaxHander =function(){
    var XMLHttp = XMLHttpFactory.createXMLHttp();
    ...
  }

Complex Factory Pattern: Process ==》 Entwerfen Sie zunächst eine abstrakte Klasse. Diese Klasse kann nicht instanziiert werden und kann nur zum Ableiten von Kindern verwendet werden .-Klasse und implementieren Sie schließlich die Factory-Methode durch Erweitern der Unterklasse


var XMLHttpFactory =function(){};    //这是一个抽象工厂模式
XMLHttpFactory.prototype = {
  //如果真的要调用这个方法会抛出一个错误,它不能被实例化,只能用来派生子类
  createFactory:function(){
   throw new Error('This is an abstract class');
  }
}
var XHRHandler =function(){}; //定义一个子类
// 子类继承父类原型方法
extend( XHRHandler , XMLHttpFactory );
XHRHandler.prototype =new XMLHttpFactory(); //把超类原型引用传递给子类,实现继承
XHRHandler.prototype.constructor = XHRHandler; //重置子类原型的构造器为子类自身
//重新定义createFactory 方法
XHRHandler.prototype.createFactory =function(){
  var XMLHttp =null;
  if (window.XMLHttpRequest){
   XMLHttp =new XMLHttpRequest();
  }else if (window.ActiveXObject){
   XMLHttp =new ActiveXObject("Microsoft.XMLHTTP")
  }
  return XMLHttp;
}

Anwendungsszenarien:

Das Fabrikmuster ist besonders nützlich in den folgenden Szenarien:

(1) Die Konstruktion von Objekten ist sehr komplex

(2) Abhängig von der spezifischen Umgebung müssen unterschiedliche Instanzen erstellt werden

(3) Verarbeitung einer großen Anzahl kleiner Objekte mit denselben Eigenschaften

Vorteile:

kann einige davon implementieren Dieselben Methoden und dieselben Methoden können wir in die übergeordnete Klasse einfügen. Wenn Sie Code in einer Klasse schreiben und eine bestimmte Geschäftslogik implementieren müssen, können Sie die Methoden der übergeordneten Klasse in einer Unterklasse überschreiben, um Ihre eigene Geschäftslogik zu implementieren >Mit anderen Worten, es gibt zwei Punkte:

1. Schwächen Sie die Kopplung zwischen Objekten, um Codeduplizierung zu verhindern. Durch die Instanziierung einer Klasse in einer Methode wird sich wiederholender Code eliminiert.

2. Wiederholter Code kann in die übergeordnete Klasse geschrieben werden. Die Unterklasse erbt alle Mitgliedseigenschaften und -methoden der übergeordneten Klasse, und die Unterklasse konzentriert sich nur auf die Implementierung ihrer eigenen Geschäftslogik.

Nachteile:

Wenn die Fabrik ein bestimmtes Niveau erreicht, nimmt die Komplexität des Codes zu und die Lesbarkeit ab. Und es löst nicht das Problem der Objekterkennung, das heißt, wie man den Typ eines Objekts erkennt.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Definition, Klassifizierung und Anwendungsbeispiele des Fabrikmusters von JavaScript-Entwurfsmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn