예제 #1
0
    static void Main(string[] args)
    {
        // Phase 1
        // Wir legen zwei Objekte an, die Daten unerschiedlichen
        // Formats in Dateien schreiben

        XmlFileWriter myXmlFileWriter = new XmlFileWriter();

        myXmlFileWriter.SetName("DataFile.xml");
        myXmlFileWriter.WriteToFile("MessdatenMessdaten");

        //IWriter Writer1 = new JsonFileWriter();
        //Writer1.SetName("DataFile1");  // keine Element des Interfaces!
        //Writer1.WriteToFile("MessdatenMessdaten");

        // Phase 2 ("Closely coupled classes")
        // Wir wollen die Methoden abermals erweitern
        // und die Daten vor dem Schreiben filtern
        // Dazu implementieren wir eine neue Klasse
        //WriteDataToXml xmlWriter = new WriteDataToXml(myXmlFileWriter);
        //xmlWriter.Write("DatenDatenDaten");
        // Was stört?
        // 1. Sobald wir "XmlFileWriter" anpassen, muss auch
        //    FilteredDataToXML korrigiert werden
        // 2. Wir schreiben eine Klasse für xml, eine für json usw. :-(

        // Phase 2 ("Losely coupled classes")
        // Wir ersetzen die "feste Integration" durch ein
        // Interface. Jede Klasse die dieses Interface bedient, kann dann
        // eingebundne werden.
        WriteData xmlOutput = new WriteData(myXmlFileWriter);

        xmlOutput.Write("DiesUndJenes");

        JsonFileWriter myJsonFileWriter = new JsonFileWriter();

        myJsonFileWriter.SetName("Data.json");
        WriteData jsonOutput = new WriteData(myJsonFileWriter);

        jsonOutput.Write("UndNochWasAnderes");

        // Ziel erreicht :-)
    }