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"); } }