public void Execute()
    {
        InterfaceAbstraction impl = new ImplementationOfInterface();

        //InterfaceAbstraction impl2 = FactoryImplementationOfInstance.createInstance();
        impl.Method();

        DesignedBaseFunctionality baseFunc = new DerivedAbstraction();

        baseFunc.SetImplementation(new AnotherImplementation());

        baseFunc.DumpString("hello world");
    }
Exemple #2
0
        static bool TestBridgePattern()
        {
            Console.WriteLine("TESTING THE BRIDGE DESIGN PATTERN: ");

            Abstraction abstraction = new DerivedAbstraction();

            abstraction.Implementor = new ConcreteImplementorA();
            abstraction.Operation();
            //Outputs "Method called from ConcreteImplementorA"

            abstraction.Implementor = new ConcreteImplementorB();
            abstraction.Operation();
            //Outputs "Method called from ConcreteImplementorB"

            return(true);
        }
Exemple #3
0
        private static void StructuralPaterns()
        {
            #region Example of Adapter patern
            Console.WriteLine("Adaptor Pattern");
            ITarget t = new SomeTarget();
            t.Request();

            ITarget t2 = new Adapter();
            t2.Request();

            #endregion

            #region Bridge

            Console.WriteLine("Bridge");
            Abstraction abstraction = new DerivedAbstraction();
            abstraction.Implementor = new ConcretImplementorA();
            abstraction.Operation();

            abstraction.Implementor = new ConcretImplementorB();
            abstraction.Operation();
            #endregion

            #region Facade
            Console.WriteLine("Facade");
            Facade facade = new Facade();
            facade.CallOperaionsUnified();

            #endregion

            #region Decorator
            ConcretComponent  component  = new ConcretComponent();
            ConcretDecoratorA decoratorA = new ConcretDecoratorA(component);
            ConcretDecoratorB decoratorB = new ConcretDecoratorB(decoratorA);

            component.Operation();

            decoratorA.Operation();

            decoratorB.Operation();
            #endregion
        }