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


  • 相关阅读:
    关于Dubbo和Spring异步注解@Async的冲突
    查看和解除Linux系统对用户使用资源的限制
    Spring 邮件发送
    分布式一致性哈希算法
    Java实现三大简单排序算法
    Java二维码生成与解码
    第三方支付之微信支付(扫码支付)
    第三方支付之支付宝(电脑网站支付)
    集成第三方开放平台
    Spring动态数据源实现读写分离
  • 原文地址:https://www.cnblogs.com/mikechang/p/1708815.html
Copyright © 2011-2022 走看看