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#,装饰,模式
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
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
![](https://img.aspxhome.com/file/2023/2/77272_0s.png)
C#中的timer与线程使用
2023-08-21 00:13:11
基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源的示例代码
2021-08-20 20:07:46
SpringBoot的异常处理流程是什么样的?
2021-07-09 17:54:40
![](https://img.aspxhome.com/file/2023/4/81894_0s.png)
支持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
![](https://img.aspxhome.com/file/2023/6/67446_0s.png)
修改maven本地仓库路径的方法
2022-08-09 13:44:16
springboot 整合 sa-token简介及入门教程
2023-03-24 01:10:45
![](https://img.aspxhome.com/file/2023/7/83457_0s.png)
Java多线程定时器Timer原理及实现
2022-03-03 09:53:51
解决idea默认带的equals和hashcode引起的bug
2023-12-22 19:02:43
![](https://img.aspxhome.com/file/2023/3/77103_0s.png)
一文带你了解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
![](https://img.aspxhome.com/file/2023/9/69949_0s.jpg)