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


  • 相关阅读:
    NoSQL、memcached介绍、安装memcached、查看memcached状态
    报警系统配置文件
    shell中的函数、数组、报警系统脚本
    for循环、while循环、break、continue、exit
    Shell脚本中的逻辑判断、文件目录属性判断、if的特殊用法、case判断
    Shell脚本、Shell脚本结构、date命令的用法、变量
    zabbix的自动发现、自定义添加监控项目、配置邮件告警
    rabbitMQ中的Vhost理解、创建和使用
    charset编码问题:YAMLException: java.nio.charset.MalformedInputException
    java jna 报错:Unable to load library
  • 原文地址:https://www.cnblogs.com/mikechang/p/1708815.html
Copyright © 2011-2022 走看看