zoukankan      html  css  js  c++  java
  • 装饰模式

    代码
        // Decorator pattern -- Structural example  
        using System;
       

        
    // "Component"
        abstract class Component
        {
          
    // Methods
          abstract public void Operation();
       }
      

       
    // "ConcreteComponent"
       class ConcreteComponent : Component
       {
         
    // Methods
         override public void Operation()
         {
           Console.WriteLine(
    "ConcreteComponent.Operation()");
         }
       }
      

       
    // "Decorator"
       abstract class Decorator : Component
       {
         
    // Fields
         protected Component component;
      

         
    // Methods
         public void SetComponent( Component component )
         {
           
    this.component = component;
         }
      

         
    override public void Operation()
         {
           
    if( component != null )
             component.Operation();
         }
       }
      

       
    // "ConcreteDecoratorA"
       class ConcreteDecoratorA : Decorator
       {
         
    // Fields
         private string addedState;
     
        
    // Methods
         override public void Operation()
         {
           
    base.Operation();
           addedState 
    = "new state";
           Console.WriteLine(
    "ConcreteDecoratorA.Operation()");
         }
       }
      
       
    // "ConcreteDecoratorB"
       class ConcreteDecoratorB : Decorator
       {
         
    // Methods
         override public void Operation()
         {
           
    base.Operation();
           AddedBehavior();
           Console.WriteLine(
    "ConcreteDecoratorB.Operation()");
         }
      

         
    void AddedBehavior()
         {
         }
       }
      
       
    /**//// <summary>
       
    /// Client test
       
    /// </summary>
       public class Client
       {
         
    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();
           Console.ReadLine();
        }
    }


  • 相关阅读:
    BZOJ4327 : JSOI2012 玄武密码
    BZOJ4303 : 数列
    BZOJ1077 : [SCOI2008]天平
    BZOJ1829 : [Usaco2010 Mar]starc星际争霸
    BZOJ1770 : [Usaco2009 Nov]lights 燈
    BZOJ3012 : [Usaco2012 Dec]First!
    BZOJ4320 : ShangHai2006 Homework
    BZOJ4311 : 向量
    BZOJ3075 : [Usaco2013]Necklace
    BZOJ4304 : 道路改建
  • 原文地址:https://www.cnblogs.com/mikechang/p/1708815.html
Copyright © 2011-2022 走看看