2016-06-02 22 views
0

Ich ging durch MSDN Artikel über Fassadenmuster. https://msdn.microsoft.com/en-us/library/orm-9780596527730-01-04.aspx#Anchor_0Muss Fassadenklasse im Fassadenmuster statisch sein?

Ich konnte den Grund nicht finden, warum sie Fassade eine statische Klasse bildeten? Warum haben sie statische Variablen verwendet, um Instanzen von Subsystemklassen zu halten? Warum haben sie statische Methoden verwendet? Ich würde gerne den Grund dahinter wissen.

Unten ist der statische Codeabschnitt aus diesem Artikel. Der vollständige Code kann im Artikel gefunden werden.

public static class Facade 
{ 
    static SubsystemA a = new SubsystemA(); 
    static SubsystemB b = new SubsystemB(); 
    static SubsystemC c = new SubsystemC(); 

    public static void Operation1() { 
     Console.WriteLine("Operation 1\n" + 
      a.A1() + 
      a.A2() + 
      b.B1()); 
    } 

    public static void Operation2() { 
     Console.WriteLine("Operation 2\n" + 
      b.B1() + 
      c.C1()); 
    } 
    } 

Antwort

4

Eine Fassade muss nicht statisch sein. Es passiert einfach, dass es in diesem Beispiel ist. Eine Fassade ist einfach ein Muster. Sie könnten leicht eine reguläre Klasse haben, die immer noch eine Fassade ist. Voraussetzung ist, dass der Zugriff auf komplexere Klassen und Methoden vereinfacht wird. Anstatt eine Instanz von 3 oder so verschiedenen Klassen zu erstellen, die eine Menge Setup benötigen und normalerweise mehrere Methodenaufrufe benötigen, um die gewünschte Endausgabe zu erhalten, führt die Fassadenklasse all das für den Programmierer durch und stellt eine vereinfachte Single bereit Klassenreferenzen und eine einzelne (oder drastisch weniger) Funktionsaufrufe.

Normalerweise wird eine Fassade Annahmen mit Daten machen, die normalerweise mehrere Schritte zum Abrufen erfordern würden. Dies könnte durch einen Algorithmus geschehen, der zuvor verwendete Eingabeparameter betrachtet oder einfach einige vordefinierte Standarddaten verwendet.