Eine kurze Erklärung des C#-Factory-Musters

巴扎黑
Freigeben: 2017-09-06 14:56:37
Original
1294 Leute haben es durchsucht

1. Simple Factory-Modus (Simple Factory)
Der Simple Factory-Modus gibt eine Instanz einer von mehreren möglichen Klassen basierend auf den ihm bereitgestellten Daten zurück. Normalerweise verfügt die zurückgegebene Klasse über eine gemeinsame übergeordnete Klasse und öffentliche Methoden.

Das Simple Factory-Muster ist eigentlich nicht eines der 23 Designmuster in GoF.
2. Rollen und Struktur des Simple Factory-Musters:
Factory-Klassenrolle Creator (LightSimpleFactory): Die Factory-Klasse erstellt Produktobjekte unter der direkten Kontrolle des Clients (Create-Methode).
Abstrakte Produktrolle Produkt (Light): Definiert die übergeordnete Klasse von Objekten, die von einer einfachen Factory erstellt wurden, oder die Schnittstelle, die sie gemeinsam nutzen. Kann eine Klasse, eine abstrakte Klasse oder eine Schnittstelle sein.
Betonproduktrolle ConcreteProduct (BulbLight, TubeLight): Definiert die spezifischen Objekte, die von der Fabrik verarbeitet werden.
3. Programmbeispiel:

using System; 
public abstract class Light
{
   public abstract void TurnOn();
   public abstract void TurnOff();
}
 
public class BulbLight : Light
{
   public override void TurnOn()
    {
      Console.WriteLine("Bulb Light is Turned on");
   }
 
   public override void TurnOff()
    {
      Console.WriteLine("Bulb Light is Turned off");
   }
}
 
public class TubeLight : Light
{
   public override void TurnOn()
    {
      Console.WriteLine("Tube Light is Turned on");
   }
 
   public override void TurnOff()
    {
      Console.WriteLine("Tube Light is Turned off");
   }
}
 
public class LightSimpleFactory
{
   public Light Create(string LightType)
    {
      if(LightType == "Bulb")
         return new BulbLight();
      else if(LightType == "Tube")
         return new TubeLight();
      else
         return null;
   }
}
 
public class Client
{
   public static void Main()
    {
      LightSimpleFactory lsf = new LightSimpleFactory();
 
      Light l = lsf.Create("Bulb");
      l.TurnOn();
      l.TurnOff();
 
      Console.WriteLine("-----------------");
 
      l = lsf.Create("Tube");
      l.TurnOn();
      l.TurnOff();
   }
}
Nach dem Login kopieren

5. Vor- und Nachteile:
Vorteile:
Die Factory-Klasse enthält die notwendige Beurteilungslogik, um zu entscheiden, wann welche Produktklasse erstellt werden soll Der Kunde ist von der Verantwortung für die direkte Erstellung des Produktobjekts befreit und „konsumiert“ lediglich das Produkt. Das einfache Fabrikmuster erreicht durch diesen Ansatz die Trennung der Verantwortlichkeiten.
Nachteile:
Wenn das Produkt eine komplexe mehrschichtige hierarchische Struktur hat, hat die Factory-Klasse nur sich selbst und kann sich auf die gleiche Weise an Änderungen anpassen, was das Manko des Modells darstellt. Da die Factory-Klasse die gesamte Produkterstellungslogik zentralisiert, ist das gesamte System betroffen, wenn sie nicht ordnungsgemäß funktioniert.
Gleichzeitig lässt sich das System nur schwer erweitern. Sobald ein neues Produkt hinzugefügt wird, muss die Fabriklogik geändert werden, was dazu führen kann, dass die Fabriklogik zu komplex wird.
Darüber hinaus verwendet das einfache Factory-Muster normalerweise statische Factory-Methoden, was eine Vererbung durch Unterklassen unmöglich macht und es für Factory-Rollen unmöglich macht, eine hierarchische Struktur basierend auf Vererbung zu bilden.

Das obige ist der detaillierte Inhalt vonEine kurze Erklärung des C#-Factory-Musters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage