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


  • 相关阅读:
    01-NoSQL概述
    SSM快速整合
    C语言指针传参与C++引用传参,以及尾插法建立单链表使用到的引用
    IP地址相关
    二叉树的先序遍历、中序遍历、后序遍历-C语言描述
    华为5G认证练习题2
    华为5G认证练习题
    华为ICT学堂获取练习题及答案
    C++ cin对象的一些方法
    webpack学习笔记2:新建工程
  • 原文地址:https://www.cnblogs.com/mikechang/p/1708815.html
Copyright © 2011-2022 走看看