public void Bridge_Pattern_Test()
        {
            var abstraction = new Abstraction(new ImplementationA());

            Assert.AreEqual("Abstract: A", abstraction.Operation());

            abstraction = new ExtendedAbstraction(new ImplementationB());
            Assert.AreEqual("Extended Abstract: B", abstraction.Operation());
        }
        public static void TestBridge()
        {
            Abstraction abstractionA   = new Abstraction(new ConcreteImplementationA());
            Abstraction abstractionB   = new Abstraction(new ConcreteImplementationB());
            Abstraction exAbstractionA = new ExtendedAbstraction(new ConcreteImplementationA());
            Abstraction exAbstractionB = new ExtendedAbstraction(new ConcreteImplementationB());

            Console.WriteLine(abstractionA.Operation());
            Console.WriteLine(abstractionB.Operation());
            Console.WriteLine(exAbstractionA.Operation());
            Console.WriteLine(exAbstractionB.Operation());
        }