using System; class SampleProgram { static void Main(string[] args) { //Hier gibts nichts zum Hinzufügen - alles vorgefertigt do { Console.Write("Bitte Wahl eingeben: "); var coffeeKind = Console.ReadLine(); var coffee = CoffeeFactory.Jacobs.Brew(coffeeKind); } while (true); } } class CoffeeFactory { #region Singleton static CoffeeFactory jacobs; public static CoffeeFactory Jacobs { get { return jacobs ?? (jacobs = new CoffeeFactory()); } } #endregion private CoffeeFactory() { } public CoffeeKind Brew(String kind) { CoffeeKind coffee = null; //Ein einfaches switch-case switch (kind) { case "Espresso": coffee = new EspressoCoffee(); break; case "Latte": coffee = new LatteCoffee(); break; case "Kroenungs": coffee = new KroenungsCoffee(); break; //Offensichtlich wurde nichts gefunden - steige aus default: Console.WriteLine("Deine Wahl war schlecht. Das haben wir nicht im Angebot!"); return null; } Console.WriteLine("Hier bitte! Dein Kaffee ist fertig."); Console.WriteLine("zzzz (" + kind + ")"); return coffee; } } abstract class CoffeeKind { } class EspressoCoffee : CoffeeKind { } class LatteCoffee : CoffeeKind { } class KroenungsCoffee : CoffeeKind { }