public static IDesignPattern GetInstance(String patternName)
        {
            IDesignPattern designPattern;

            switch (patternName)
            {
            case DesignPatternConstants.SINGLETON:
                designPattern = ChocolateBoiler.GetSynchronizedInstance();
                break;

            case DesignPatternConstants.STRATEGY:
                designPattern = new MiniDuckSimulator();
                break;

            case DesignPatternConstants.OBSERVER:
                designPattern = new WeatherStation();
                break;

            case DesignPatternConstants.DECORATOR:
                designPattern = new StarbuzzCoffee();
                break;

            case DesignPatternConstants.SIMPLE_FACTORY:
                SimplePizzaFactory factory = new SimplePizzaFactory();
                designPattern = new SimpleFactory.PizzaStore.PizzaStore(factory);
                break;

            case DesignPatternConstants.FACTORY_METHOD:
                designPattern = new PizzaStoreFranchisor();
                break;

            case DesignPatternConstants.ABSTRACT_FACTORY:
                designPattern = new PizzaTestDrive();
                break;

            case DesignPatternConstants.COMMAND:
                designPattern = new RemoteLoader();
                break;

            case DesignPatternConstants.ADAPTER:
                designPattern = new DuckTestDrive();
                break;

            case DesignPatternConstants.FACADE:
                designPattern = new HomeTheaterTestDrive();
                break;

            default:
                throw new NotImplementedException();
            }

            return(designPattern);
        }
 static void Main(string[] args)
 {
     DuckTestDrive.Run();
     Console.ReadKey();
 }