public static void Run() { char key; while (true) { printMenu(); key = Console.ReadKey().KeyChar; Console.WriteLine(); switch (key) { case 'd': DecoratorPatternExample.Display(); break; case 'a': AdapterPatternExample.Display(); break; case 'f': FacadePatternExample.Display(); break; case 'c': CompositePatternExample.Display(); break; case 'p': ProxyPatternExample.Display(); break; case 'b': BridgePatternExample.Display(); break; case 'l': FlyweightPatternExample.Display(); break; case 'x': return; } Console.ReadKey(); } }
private static void Main(string[] args) { while (true) { Console.WriteLine("╔═══════════════════════════════════╦═════════════════╗"); Console.WriteLine("║ Design Patterns ║ X. Exit ║"); Console.WriteLine("╠═════════════════╦═════════════════╬═════════════════╣"); Console.WriteLine("║ 1. Creational ║ 2. Structural ║ 3. Behavioral ║"); Console.WriteLine("╚═════════════════╩═════════════════╩═════════════════╝"); var choice = char.ToLower(Console.ReadKey().KeyChar); Console.Clear(); var done = false; switch (choice) { case '1': while (!done) { Console.WriteLine("╔═══════════════════════════════════════════════════════════════════════════════════════╦═════════════════════╗"); Console.WriteLine("║ Creational Design Patterns ║ P. Back ║"); Console.WriteLine("╠═════════════════════╦═════════════════════╦═════════════════════╦═════════════════════╬═════════════════════╣"); Console.WriteLine("║ 1. Factory ║ 2. Abstract Factory ║ 3. Singleton ║ 4. Builder ║ 5. Prototype ║"); Console.WriteLine("╚═════════════════════╩═════════════════════╩═════════════════════╩═════════════════════╩═════════════════════╝"); choice = char.ToLower(Console.ReadKey().KeyChar); Console.Clear(); switch (choice) { case '1': FactoryPatternExample.Run(); break; case '2': AbstractFactoryPatternExample.Run(); break; case '3': SingletonPatternExample.Run(); break; case '4': BuilderPatternExample.Run(); break; case '5': PrototypePatternExample.Run(); break; case 'p': done = true; break; default: Console.WriteLine("Choice range (1-5) or P for previous menu. "); break; } } break; case '2': while (!done) { Console.WriteLine("╔═══════════════════════════════════════════════════════════════════════╦═══════════════════════╗"); Console.WriteLine("║ Structural Design Patterns ║ P. Back ║"); Console.WriteLine("╠═══════════════════════╦═══════════════════════╦═══════════════════════╬═══════════════════════╣"); Console.WriteLine("║ 1. Adapter ║ 2. Bridge ║ 3. Decorator ║ 4. Facade ║"); Console.WriteLine("╠═══════════════════════╬═══════════════════════╬═══════════════════════╬═══════════════════════╣"); Console.WriteLine("║ 5. Facade ║ 6. Proxy ║ 7. Composite ║ 8. Private Class Data ║"); Console.WriteLine("╚═══════════════════════╩═══════════════════════╩═══════════════════════╩═══════════════════════╝"); choice = char.ToLower(Console.ReadKey().KeyChar); Console.Clear(); switch (choice) { case '1': AdapterPatternExample.Run(); break; case '2': BridgePatternExample.Run(); break; case '3': DecoratorPatternExample.Run(); break; case '4': FacadePatternExample.Run(); break; case '5': FlyweightPatternExample.Run(); break; case '6': ProxyPatternExample.Run(); break; case '7': CompositePatternExample.Run(); break; case '8': PrivateClassDataPattern.Run(); break; case 'p': done = true; break; default: Console.WriteLine("Choice range (1-8) or P for previous menu. "); break; } } break; case '3': while (!done) { Console.WriteLine("╔══════════════════════════════════════════════════════════════════════════════════════╦════════════════════════════╗"); Console.WriteLine("║ Behavioral Design Patterns ║ P. Back ║"); Console.WriteLine("╠════════════════════════════╦════════════════════════════╦════════════════════════════╬════════════════════════════╣"); Console.WriteLine("║ 1. Chain of Responsibility ║ 2. Command ║ 3. Interpreter ║ 4. Iterator ║"); Console.WriteLine("╠════════════════════════════╬════════════════════════════╬════════════════════════════╬════════════════════════════╣"); Console.WriteLine("║ 5. Mediator ║ 6. Memento ║ 7. Observer ║ 8. State ║"); Console.WriteLine("╠════════════════════════════╬════════════════════════════╬════════════════════════════╬════════════════════════════╣"); Console.WriteLine("║ 9. Strategy ║ A. Template ║ B. Visitor ║ C. Null Object ║"); Console.WriteLine("╚════════════════════════════╩════════════════════════════╩════════════════════════════╩════════════════════════════╝"); choice = char.ToLower(Console.ReadKey().KeyChar); Console.Clear(); switch (choice) { case '1': ChainofResponsibilityPatternExample.Run(); break; case '2': CommandPatternExample.Run(); break; case '3': InterpreterPatternExample.Run(); break; case '4': IteratorPatternExample.Run(); break; case '5': MediatorPatternExample.Run(); break; case '6': MementoPatternExample.Run(); break; case '7': ObserverPatternExample.Run(); break; case '8': StatePatternExample.Run(); break; case '9': StrategyPatternExample.Run(); break; case 'a': TemplatePatternExample.Run(); break; case 'b': VisitorPatternExample.Run(); break; case 'c': NullObjectPatternExample.Run(); break; case 'p': done = true; break; default: Console.WriteLine("Choice range (1-9, a-b) or p for previous menu. "); break; } } break; case 'x': return; default: Console.WriteLine("Choice range (1-3) or X for exit. "); break; } } }