public void Test_demo()
        {
            {
                IImplementation implementationA = new ConcreteImplementationA();

                Abstraction abstraction = new Abstraction(implementationA);

                abstraction.Operation();

                Assert.That(abstraction.GetData() == "ImplementationA");
            }

            {
                IImplementation implementationA = new ConcreteImplementationA();
                IImplementation implementationB = new ConcreteImplementationB();

                Abstraction abstraction = new Abstraction(implementationB);
                abstraction.Operation();

                Assert.That(abstraction.GetData() == "ImplementationB");


                abstraction = new Abstraction(implementationA);
                abstraction.Operation();

                Assert.That(abstraction.GetData() == "ImplementationA");
            }
        }