Exemplo n.º 1
0
        static void DecoratorTester()
        {
            #region sample 1
            var c  = new ConcreteComponent();
            var d1 = new ConcreteDecoratorA();
            var d2 = new ConcreteDecoratorB();

            // Link decorators
            d1.SetComponent(c);
            d2.SetComponent(d1);

            d2.Operation();

            #endregion


            #region sample 2
            var book = new Book("Worley", "Inside ASP.NET", 10);
            book.Display();

            // Create video
            var video = new Video("Spielberg", "Jaws", 23, 92);
            video.Display();

            // Make video borrowable, then borrow and display
            Console.WriteLine("\nMaking video borrowable:");

            var borrowvideo = new Borrowable(video);
            borrowvideo.BorrowItem("Customer #1");
            borrowvideo.BorrowItem("Customer #2");

            borrowvideo.Display();
            #endregion
        }
Exemplo n.º 2
0
        static bool TestDecoratorPattern()
        {
            Console.WriteLine("TESTING THE DECORATOR DESIGN PATTERN: ");

            ConcreteComponent  comp = new ConcreteComponent();
            ConcreteDecoratorA d1   = new ConcreteDecoratorA(comp);
            ConcreteDecoratorB d2   = new ConcreteDecoratorB(d1);

            comp.Operation();
            //Output:
            //Operation from ConcreteComponent

            d1.Operation();
            //Output:
            //Operation from ConcreteComponent
            //(AddedBehaviour A) + Operation from ConcreteDecoratorA

            d2.Operation();
            //Output:
            //Operation from ConcreteComponent
            //(AddedBehaviour A) + Operation from ConcreteDecoratorA
            //(AddedBehaviour B) + Operation from ConcreteDecoratorB

            return(true);
        }
Exemplo n.º 3
0
        private static void ShowDecorator()
        {
            Console.WriteLine("================================================");
            Console.WriteLine("Pattern code (Decorator):");
            ConcreteComponent  c  = new ConcreteComponent();
            ConcreteDecoratorA d1 = new ConcreteDecoratorA();
            ConcreteDecoratorB d2 = new ConcreteDecoratorB();

            d1.SetComponent(c);
            d2.SetComponent(d1);

            d2.Operation();

            Console.WriteLine("\nReal code (Decorator):");

            Pizza pizza1 = new ItalianPizza();

            pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами
            Console.WriteLine("Название: {0}", pizza1.Name);
            Console.WriteLine("Цена: {0}", pizza1.GetCost());

            Pizza pizza2 = new ItalianPizza();

            pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром
            Console.WriteLine("Название: {0}", pizza2.Name);
            Console.WriteLine("Цена: {0}", pizza2.GetCost());

            Pizza pizza3 = new BulgerianPizza();

            pizza3 = new TomatoPizza(pizza3);
            pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром
            Console.WriteLine("Название: {0}", pizza3.Name);
            Console.WriteLine("Цена: {0}", pizza3.GetCost());
        }
Exemplo n.º 4
0
    static void Main()
    {
        ConcreteComponent  c  = new ConcreteComponent();
        ConcreteDecoratorA d1 = new ConcreteDecoratorA(c);
        ConcreteDecoratorB d2 = new ConcreteDecoratorB(d1);

        d2.Operation();
        Console.ReadKey();
    }
Exemplo n.º 5
0
        public override void Ispisi()
        {
            var ispisEmisije = IdEmisije + ";" + NazivEmisije + ";" + PocetakEmisije.ToShortTimeString() + ";" +
                               KrajEmisije.ToShortTimeString() + ";" + VrstaEmisije.Opis + ";" + UnikatniID + ";" +
                               PretvoriOsobeUloge(OsobeUloge);
            var simple     = new ConcreteDComponent();
            var decorator1 = new ConcreteDecoratorA(simple);

            Console.WriteLine(decorator1.Ispis(ispisEmisije));
        }
Exemplo n.º 6
0
        static void Main()
        {
            Component component  = new ConcreteComponent();
            Decorator decoratorA = new ConcreteDecoratorA();
            Decorator decoratorB = new ConcreteDecoratorB();

            decoratorA.Component = component;
            decoratorB.Component = decoratorA;
            decoratorB.Operation();
        }
Exemplo n.º 7
0
    public static void Main(string[] args)
    {
        ConcreteComponent  c  = new ConcreteComponent();
        ConcreteDecoratorA d1 = new ConcreteDecoratorA();
        ConcreteDecoratorB d2 = new ConcreteDecoratorB();

        d1.SetComponent(c);
        d2.SetComponent(d1);
        d2.Operation();
    }
Exemplo n.º 8
0
        public void AddStateTest()
        {
            Component component = new ConcreteComponent();

            component = new ConcreteDecoratorA(component);

            Assert.That((component as ConcreteDecoratorA)?.AddedState == "added state");
            Assert.That(() => component.Operation(),
                        Throws.Exception.With.Message.EqualTo("Operation from object of ConcreteComponent type"));
        }
Exemplo n.º 9
0
        public static void TestConcreteDecorators()
        {
            var c  = new ConcreteComponent();
            var d1 = new ConcreteDecoratorA();
            var d2 = new ConcreteDecoratorB();

            d1.SetComponent(c);
            d2.SetComponent(d1);

            StringAssert.AreEqualIgnoringCase(d2.Operation(true), "ConcreteDecoratorB.Operation()ConcreteDecoratorA.Operation()ConcreteComponent.Operation()");
        }
Exemplo n.º 10
0
        public static void DecoratorPattern()
        {
            ConcreteComponent  c  = new ConcreteComponent();
            ConcreteDecoratorA d1 = new ConcreteDecoratorA();
            ConcreteDecoratorB d2 = new ConcreteDecoratorB();

            d1.SetComponent(c);
            d2.SetComponent(d1);
            d2.Operation();
            Console.Read();
        }
Exemplo n.º 11
0
        public static void TestDecorator()
        {
            IComponent component = new ConcreteComponent();

            Console.WriteLine(component.Operation());
            Decorator decorator = new ConcreteDecoratorA(component);

            Console.WriteLine(decorator.Operation());
            decorator = new ConcreteDecoratorB(decorator);
            Console.WriteLine(decorator.Operation());
        }
Exemplo n.º 12
0
        public void TestDecorator()
        {
            ConcreteComponent  c  = new ConcreteComponent();
            ConcreteDecoratorA d1 = new ConcreteDecoratorA();
            ConcreteDecoratorB d2 = new ConcreteDecoratorB();

            // Link decorators
            d1.SetComponent(c);
            d2.SetComponent(d1);

            d2.Operation();
        }
Exemplo n.º 13
0
        public void test_component_demo()
        {
            ConcreteComponentA componentA = new ConcreteComponentA();
            ConcreteComponentB componentB = new ConcreteComponentB();

            ConcreteDecoratorA decoratorA = new ConcreteDecoratorA(componentA);

            decoratorA.Operation();

            decoratorA.SetComponent(componentB);
            decoratorA.Operation();
        }
Exemplo n.º 14
0
        static void Main(string[] args)
        {
            ConcreteComponent  component = new ConcreteComponent();
            ConcreteDecoratorA da        = new ConcreteDecoratorA();
            ConcreteDecoratorB db        = new ConcreteDecoratorB();

            da.SetComponent(component);
            db.SetComponent(da);
            db.Operation();

            Console.ReadKey(true);
        }
Exemplo n.º 15
0
        static void Main(string[] args)
        {
            ConcreteComponent  concreteComponent  = new ConcreteComponent();
            ConcreteDecoratorA concreteDecoratorA = new ConcreteDecoratorA();
            ConcreteDecoratorB concreteDecoratorB = new ConcreteDecoratorB();

            concreteDecoratorA.Component = concreteComponent;
            concreteDecoratorB.Component = concreteDecoratorA;

            concreteDecoratorB.Operation();

            Console.Read();
        }
        static void Main()
        {
            {
                ConcreteComponent c = new ConcreteComponent();
                ConcreteDecoratorA d1 = new ConcreteDecoratorA();
                ConcreteDecoratorB d2 = new ConcreteDecoratorB();

                d1.SetComponent(c);
                d2.SetComponent(d1);

                d2.Operation();
            }
        }
Exemplo n.º 17
0
        public static void DecoratorStructural()
        {
            // Create ConcreteComponent and two Decorators
            ConcreteComponent  c  = new ConcreteComponent();
            ConcreteDecoratorA d1 = new ConcreteDecoratorA();
            ConcreteDecoratorB d2 = new ConcreteDecoratorB();

            // Link decorators
            d1.SetComponent(c);
            d2.SetComponent(d1);

            d2.Operation();
        }
            static void Main()
            {
                // Create ConcreteComponent and two Decorators
                ConcreteComponent  c  = new ConcreteComponent();
                ConcreteDecoratorA d1 = new ConcreteDecoratorA();
                ConcreteDecoratorB d2 = new ConcreteDecoratorB();

                // Link decorators
                d1.SetComponent(c);
                d2.SetComponent(d1);
                d2.Operation();
                Console.ReadKey();
            }
Exemplo n.º 19
0
            private static void Test()
            {
                var c  = new ConcreteComponent();
                var d1 = new ConcreteDecoratorA();
                var d2 = new ConcreteDecoratorB();

                //Tutaj widac dekoracje
                d1.SetComponent(c);
                d2.SetComponent(d1);

                d2.Operation();

                Console.ReadKey();
            }
Exemplo n.º 20
0
        public void DecoratorTest()
        {
            var simple = new ConcreteComponent();

            Client.ClientCode(simple).Should().Be(StructuralText.ConcreteComponent);

            // Note how decorators can wrap not only simple components but the other decorators as well.
            var decorator1 = new ConcreteDecoratorA(simple);
            var decorator2 = new ConcreteDecoratorB(decorator1);

            Client.ClientCode(decorator2).Should().Be(StructuralText.ConcreteDecoratorB +
                                                      StructuralText.ConcreteDecoratorA +
                                                      StructuralText.ConcreteComponent);
        }
Exemplo n.º 21
0
        private static void Test1()
        {
            // 首先实例化具体对象ConcreateComponent 【具体组合】
            ConcreateComponent c = new ConcreateComponent();

            // 然后实例化具体装饰类
            ConcreteDecoratorA d1 = new ConcreteDecoratorA();
            ConcreteDecoratorB d2 = new ConcreteDecoratorB();

            // 开始包装
            d1.SetComponent(c);
            d2.SetComponent(d1);
            d2.Operation();
        }
Exemplo n.º 22
0
        static void Main(string[] args)
        {
            Component component = new ConcreteComponent();

            Abstraction.Decorator decoratorA = new ConcreteDecoratorA();
            Abstraction.Decorator decoratorB = new ConcreteDecoratorB();

            decoratorA.Component = component;
            decoratorB.Component = decoratorA;

            decoratorB.Operation();

            Console.ReadKey();
        }
Exemplo n.º 23
0
        public Client()
        {
            ConcreteComponent concreteComponent = new ConcreteComponent();

            ConcreteDecoratorA concreteDecoratorA = new ConcreteDecoratorA();
            ConcreteDecoratorB concreteDecoratorB = new ConcreteDecoratorB();


            concreteDecoratorA.SetComponent(concreteComponent);
            concreteDecoratorB.SetComponent(concreteDecoratorA);
            concreteDecoratorB.Operation();

            Console.Read();
        }
Exemplo n.º 24
0
        public static void Create()
        {
            var c  = new ConcreteComponent();
            var d1 = new ConcreteDecoratorA();
            var d2 = new ConcreteDecoratorB();

            // Link decorators.
            d1.Component = c;
            d2.Component = d1;

            // Do the operation.

            d2.Operation();
        }
Exemplo n.º 25
0
  public static void Main( string[] args )
  {
    // Create ConcreteComponent and two Decorators
    ConcreteComponent c = new ConcreteComponent();
    ConcreteDecoratorA d1 = new ConcreteDecoratorA();
    ConcreteDecoratorB d2 = new ConcreteDecoratorB();

    // Link decorators
    d1.SetComponent( c );
    d2.SetComponent( d1 );

    d2.Operation();

  }
Exemplo n.º 26
0
        public static void test()
        {
            // Create ConcreteComponent and two Decorators
            ConcreteComponent c  = new ConcreteComponent("c");
            Decorator         a1 = new ConcreteDecoratorA("a1");
            Decorator         b1 = new ConcreteDecoratorA("b1");
            Decorator         a2 = new ConcreteDecoratorA("a2");

            // Link decorators
            a1.SetComponent(c);
            b1.SetComponent(a1);
            a2.SetComponent(b1);

            a2.Operation();
        }
Exemplo n.º 27
0
        static void Run()
        {
            //实例化实现类
            ConcreteComponent concrete = new ConcreteComponent();
            //实例化装饰类
            ConcreteDecoratorA decoratorA = new ConcreteDecoratorA();
            ConcreteDecoratorB decoratorB = new ConcreteDecoratorB();

            //用装饰类装饰实现类
            decoratorA.SetComponent(concrete);
            decoratorB.SetComponent(decoratorA);

            //
            decoratorB.Operation();
        }
Exemplo n.º 28
0
        /// <summary>
        /// Execute decorator design pattern example
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Decorator_OnClick(object sender, RoutedEventArgs e)
        {
            var simpleComponent = new ConcreteComponent();

            DesignPatternsLog.Text += $"Decorator@ I get a simple component: {simpleComponent.Operation()}";
            DesignPatternsLog.Text += $"{Environment.NewLine}";

            // Note how decorators can wrap not only simple components
            // but the other decorators as well.
            var decoratorA = new ConcreteDecoratorA(simpleComponent);
            var decoratorB = new ConcreteDecoratorB(decoratorA);

            DesignPatternsLog.Text += $"Decorator@ Now I've got a decorated component: {decoratorB.Operation()}";
            DesignPatternsLog.Text += $"{Environment.NewLine}";
        }
Exemplo n.º 29
0
        static void Main(string[] args)
        {
            Client client = new Client();

            var simple = new ConcreteComponent();

            Console.WriteLine("Client: I get a sumple component:");
            client.ClientCode(simple);
            Console.WriteLine();

            ConcreteDecoratorA d1 = new ConcreteDecoratorA(simple);
            ConcreteDecoratorB d2 = new ConcreteDecoratorB(d1);

            Console.WriteLine("Client: Now I get a decorated component:");
            client.ClientCode(d2);
        }
Exemplo n.º 30
0
	// 
	void UnitTest () {

		// 物件
		ConcreteComponent theComponent = new ConcreteComponent();

		// 增加Decorator
		ConcreteDecoratorA theDecoratorA = new ConcreteDecoratorA( theComponent );
		theDecoratorA.Operator();

		ConcreteDecoratorB theDecoratorB = new ConcreteDecoratorB( theComponent );
		theDecoratorB.Operator();

		// 再增加一層
		ConcreteDecoratorB theDecoratorB2 = new ConcreteDecoratorB( theDecoratorA );
		theDecoratorB2.Operator();
	}
Exemplo n.º 31
0
        // "Component"
        public void TestDecoratorPattern()
        {
            // Create ConcreteComponent and two Decorators
            var c  = new ConcreteComponent();
            var d1 = new ConcreteDecoratorA();
            var d2 = new ConcreteDecoratorB();

            // Link decorators
            d1.SetComponent(c);
            d2.SetComponent(d1);

            d2.Operation();

            // Wait for user
            Console.Read();
        }
Exemplo n.º 32
0
        private static void DoDecorator()
        {
            DecoratorClient client = new DecoratorClient();

            ConcreteComponent 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 decorated component");
            client.ClientCode(decorator2);
        }
Exemplo n.º 33
0
        static void Main(string[] args)
        {
            Component component = new ConcreteComponent();

            //第一次修饰
            component = new ConcreteDecoratorA(component);
            //第二次装饰
            component = new ConcreteDecoratorB(component);

            component.Operation();

            //Person p = new Person("sun");
            //Shirt t  = new Shirt();
            //t.Decorate(p);
            //t.Show();
            Console.ReadLine();
        }
Exemplo n.º 34
0
    static void Main()
    {
        // Create ConcreteComponent and two Decorators
          ConcreteComponent c = new ConcreteComponent();
          ConcreteDecoratorA d1 = new ConcreteDecoratorA();
          ConcreteDecoratorB d2 = new ConcreteDecoratorB();

          // Link decorators
          d1.SetComponent(c);
          d2.SetComponent(d1);

          d2.Operation();

          // Wait for user
          Console.Read();
    }