Example #1
0
        public void Do()
        {
            try
            {
                // Create a console
                AllocConsole();

                PatternCommandType type = m_gof.CurrentType;

                // Log the running pattern
                Console.WriteLine(string.Format(c_sLogFormat, m_sPatternName, type.ToString()));

                // Find Class by reflection
                string sAppName = string.Format(c_sAppFormat, m_sPatternName, type.ToString());
                Type   mainApp  = Type.GetType(sAppName);
                if (mainApp == null)
                {
                    throw new GoFException(c_sMainAppError + sAppName);
                }

                // Find Main Entry point by reflection
                MethodInfo main = mainApp.GetMethod(c_sEntryPoint, BindingFlags.Static | BindingFlags.Public);
                if (main == null)
                {
                    throw new GoFException(c_sMainError + sAppName);
                }

                // Call the main entry point for the pattern
                main.Invoke(null, null);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);

                if (ex.InnerException != null)
                {
                    Console.WriteLine();
                    Console.WriteLine(ex.InnerException.Message);
                }


                Console.WriteLine();
                Console.WriteLine(ex.StackTrace);

                Console.ReadKey();
            }
            finally
            {
                // Release the console
                FreeConsole();
            }
        }
 public GangOfFour()
 {
     CurrentType = PatternCommandType.Structural;
     Items       = new List <Pattern>(new Pattern[]
     {
         new Pattern
         {
             Name           = "AbstractFactory",
             Category       = PatternCategory.Creational,
             FrequencyLevel = 5,
         },
         new Pattern
         {
             Name           = "Builder",
             Category       = PatternCategory.Creational,
             FrequencyLevel = 2,
         },
         new Pattern
         {
             Name           = "FactoryMethod",
             Category       = PatternCategory.Creational,
             FrequencyLevel = 5,
         },
         new Pattern
         {
             Name           = "Prototype",
             Category       = PatternCategory.Creational,
             FrequencyLevel = 3,
         },
         new Pattern
         {
             Name           = "Singleton",
             Category       = PatternCategory.Creational,
             FrequencyLevel = 4,
         },
         new Pattern
         {
             Name           = "Adapter",
             Category       = PatternCategory.Structural,
             FrequencyLevel = 4,
         },
         new Pattern
         {
             Name           = "Bridge",
             Category       = PatternCategory.Structural,
             FrequencyLevel = 3,
         },
         new Pattern
         {
             Name           = "Composite",
             Category       = PatternCategory.Structural,
             FrequencyLevel = 4,
         },
         new Pattern
         {
             Name           = "Decorator",
             Category       = PatternCategory.Structural,
             FrequencyLevel = 3,
         },
         new Pattern
         {
             Name           = "Facade",
             Category       = PatternCategory.Structural,
             FrequencyLevel = 5,
         },
         new Pattern
         {
             Name           = "Flyweight",
             Category       = PatternCategory.Structural,
             FrequencyLevel = 1,
         },
         new Pattern
         {
             Name           = "Proxy",
             Category       = PatternCategory.Structural,
             FrequencyLevel = 4,
         },
         new Pattern
         {
             Name           = "ChainOfResponsibility",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 2,
         },
         new Pattern
         {
             Name           = "Command",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 4,
         },
         new Pattern
         {
             Name           = "Interpreter",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 1,
         },
         new Pattern
         {
             Name           = "Iterator",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 5,
         },
         new Pattern
         {
             Name           = "Mediator",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 2,
         },
         new Pattern
         {
             Name           = "Memento",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 1,
         },
         new Pattern
         {
             Name           = "Observer",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 5,
         },
         new Pattern
         {
             Name           = "State",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 3,
         },
         new Pattern
         {
             Name           = "Strategy",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 4,
         },
         new Pattern
         {
             Name           = "TemplateMethod",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 3,
         },
         new Pattern
         {
             Name           = "Visitor",
             Category       = PatternCategory.Behavioral,
             FrequencyLevel = 1,
         },
     });
 }