C#装饰者模式实例分析

作者:shichen2014 时间:2022-07-16 00:33:53 

本文实例讲述了C#装饰者模式。分享给大家供大家参考。具体方法如下:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 装饰者
{
 class Program
 {
   static void Main(string[] args)
   {
     ConcreteComponent con = new ConcreteComponent();
     ConcreteDecoratorA a = new ConcreteDecoratorA();
     a.SetComponent(con);
     a.Operation();
     a.AddBehavior();
     Console.WriteLine("============================");
     ConcreteDecoratorB B = new ConcreteDecoratorB();
     B.SetComponent(a);
     a.AddBehavior();
     B.Operation();
     B.AddBehavior();
   }
   public abstract class Component
   {
     public abstract void Operation();
   }
   abstract class Decorator : Component
   {
     private Component component;
     public void SetComponent(Component component)
     {
       this.component = component;
     }
     public override void Operation()
     {
       if (component != null)
       {
         component.Operation();
       }
     }
   }
   class ConcreteDecoratorA : Decorator
   {
     public override void Operation()
     {
       base.Operation();
     }
     public void AddBehavior()
     {
       Console.WriteLine("装饰A类的操作!");
     }
   }
   class ConcreteDecoratorB : Decorator
   {
     public override void Operation()
     {
       base.Operation();
     }
     public void AddBehavior()
     {
       Console.WriteLine("装饰B类的操作!");
     }
   }
   public class ConcreteComponent : Component
   {
     public override void Operation()
     {
       Console.WriteLine("具体对象的操作!");
     }
   }
 }
}

希望本文所述对大家的C#程序设计有所帮助。

标签:C#,装饰,模式
0
投稿

猜你喜欢

  • Go&java算法之最大数示例详解

    2023-10-30 08:54:56
  • Spingboot JPA CriteriaBuilder 如何获取指定字段

    2022-07-20 15:40:22
  • springboot加载复杂的yml文件获取不到值的解决方案

    2021-07-29 18:26:11
  • c#多线程的应用全面解析

    2023-03-03 21:15:02
  • C#中的timer与线程使用

    2023-08-21 00:13:11
  • 基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源的示例代码

    2021-08-20 20:07:46
  • SpringBoot的异常处理流程是什么样的?

    2021-07-09 17:54:40
  • 支持SpEL表达式的自定义日志注解@SysLog介绍

    2023-08-27 09:38:42
  • Java date format时间格式化操作示例

    2021-10-28 19:12:24
  • SpringBoot中 Jackson 日期的时区和日期格式问题解决

    2021-09-06 19:37:50
  • 修改maven本地仓库路径的方法

    2022-08-09 13:44:16
  • springboot 整合 sa-token简介及入门教程

    2023-03-24 01:10:45
  • Java多线程定时器Timer原理及实现

    2022-03-03 09:53:51
  • 解决idea默认带的equals和hashcode引起的bug

    2023-12-22 19:02:43
  • 一文带你了解C#中抽象方法与虚方法的区别

    2023-07-23 00:14:32
  • Hibernate环境搭建与配置方法(Hello world配置文件版)

    2022-07-31 06:26:04
  • 通过JDK源码角度分析Long类详解

    2022-03-11 19:26:38
  • ssm mybatis如何配置多个mapper目录

    2021-12-06 14:08:25
  • mybatis 字段名自动转小写的实现

    2021-09-09 20:04:26
  • Spring MVC4.1服务器端推送实现过程解析

    2021-07-24 14:53:16
  • asp之家 软件编程 m.aspxhome.com