Exemplo n.º 1
0
 private static void Main(string[] args)
 {
     #region Adapter
     ///Adapter pattern example
     //var adapter = new AdapterClient();
     //adapter.Main();
     #endregion
     #region Bridge
     ///Bridge pattern example
     //var bridgeClient = new BridgeClient();
     //Abstraction abstraction = new Abstraction(new ConcreteImplementationA());
     //bridgeClient.ClientCode(abstraction);
     //Console.WriteLine();
     //abstraction = new ExtendedAbstraction(new ConcreteImplementationB());
     //bridgeClient.ClientCode(abstraction);
     #endregion
     #region Composite
     ///Composite pattern example
     //CompositeClient client = new CompositeClient();
     //Leaf leaf = new Leaf();
     //Console.WriteLine("Client: I get a simple component:");
     //client.ClientCode(leaf);
     //var tree = new Composite.Composite();
     //Composite.Composite branch1 = new Composite.Composite();
     //branch1.Add(new Leaf());
     //branch1.Add(new Leaf());
     //Composite.Composite branch2 = new Composite.Composite();
     //branch2.Add(new Leaf());
     //tree.Add(branch1);
     //tree.Add(branch2);
     //Console.WriteLine("Client: Now I've got a composite tree:");
     //client.ClientCode(tree);
     //Console.Write("Client: I don't need to check the components classes even when managing the tree:\n");
     //client.ClientCode2(tree, leaf);
     #endregion
     #region Decorator
     /// Decorator pattern example
     //DecoratorClient client = new DecoratorClient();
     //var simple = new ConcreteComponent();
     //Console.WriteLine("Client: I get a simple component:");
     //client.ClientCode(simple);
     //Console.WriteLine();
     //ConcreteDecoratorA decorator1 = new ConcreteDecoratorA(simple);
     //ConcreteDecoratorB decorator2 = new ConcreteDecoratorB(decorator1);
     //Console.WriteLine("Client: Now I've got a decorated component:");
     //client.ClientCode(decorator2);
     #endregion
     #region Facade
     /// Facade pattern example
     SubSystem1    subsystem1 = new SubSystem1();
     SubSystem2    subsystem2 = new SubSystem2();
     Facade.Facade facade     = new Facade.Facade(subsystem1, subsystem2);
     FacadeClient.ClientCode(facade);
     #endregion
     Console.ReadKey();
 }