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


  • 相关阅读:
    jupyter notebook代码添加行号(菜单中点击view后没有toggle line numbers选项)
    深度学习:tensorflow中激励函数的实现
    深度学习:padding、卷积、stride的计算
    深度学习:mAP(mean average precision)
    java实现桶排序
    java 数组实现队列和栈
    五步学习法
    技术团队组织架构
    Redis的高可用:哨兵和集群
    Redis限流的实现方式有3种
  • 原文地址:https://www.cnblogs.com/mikechang/p/1708815.html
Copyright © 2011-2022 走看看