首页 > 其他分享 >中间件管道设计模式实现

中间件管道设计模式实现

时间:2024-12-19 16:21:07浏览次数:9  
标签:Console Invoke PipelineContext 中间件 管道 context middlewares 设计模式 public

        public interface IMiddleware
        {
            void Invoke(PipelineContext context, Action next);
        }

        public class PipelineContext
        {
            public string Data { get; set; }
        }

        public class PipelineExecutor
        {
            private readonly List<IMiddleware> _middlewares;
            private int _currentIndex = 0;

            public PipelineExecutor()
            {
                _middlewares = new List<IMiddleware>();
            }

            public PipelineExecutor(List<IMiddleware> middlewares)
            {
                _middlewares = middlewares;
            }

            public void Execute(PipelineContext context)
            {
                if (_currentIndex < _middlewares.Count)
                {
                    var middleware = _middlewares[_currentIndex++];
                    middleware.Invoke(context, () => Execute(context));
                }
            }

            public PipelineExecutor Use(IMiddleware middleware)
            {
                _middlewares.Add(middleware);
                return this;
            }
        }

        // 示例中间件
        public class LoggingMiddleware : IMiddleware
        {
            public void Invoke(PipelineContext context, Action next)
            {
                Console.WriteLine(" Logging 开始处理请求...");
                next.Invoke();
                Console.WriteLine(" Logging 请求处理完毕。");
            }
        }
        // 示例中间件
        public class ConsoleMiddleware : IMiddleware
        {
            public void Invoke(PipelineContext context, Action next)
            {
                Console.WriteLine("Console 开始处理请求...");
                next.Invoke();
                Console.WriteLine("Console 请求处理完毕。");
            }
        }


//执行   
var executor = new PipelineExecutor();
executor.Use(new ConsoleMiddleware());
executor.Use(new LoggingMiddleware());
var context = new PipelineContext { Data = "测试" };
executor.Execute(context);

  

标签:Console,Invoke,PipelineContext,中间件,管道,context,middlewares,设计模式,public
From: https://www.cnblogs.com/Gekoa/p/18617474

相关文章

  • 设计模式--工厂方法模式【创建型模式】
    设计模式的分类我们都知道有23种设计模式,这23种设计模式可分为如下三类:创建型模式(5种):单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式(11种):策略......
  • 设计模式——建造者模式
    设计模式——建造者模式目录设计模式——建造者模式介绍实现结构及工作流程经典实现示例优缺点使用场景扩展实现示例总结介绍建造者模式(BuilderPattern)是一种创建型设计模式,它通过将一个复杂对象的构建过程分解成多个简单的步骤,从而使得不同的构建过程可以生成......
  • 设计模式——工厂模式
    设计模式——工厂模式目录设计模式——工厂模式介绍实现简单工厂模式工厂方法模式抽象工厂模式总结介绍工厂模式(FactoryPattern)是Java设计模式中的一种创建型模式,它提供了一种创建对象的方式,而不需要指定具体的类。工厂模式通过引入工厂类来创建对象,将对象的创......
  • 【设计模式与体系结构】创建型模式-工厂模式
    简介工厂方法模式是一种创建对象的设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪个类。工厂方法把实例化操作推迟到子类中实现。工厂方法模式的角色抽象工厂类:声明工厂方法,负责创建产品对象具体工厂类:实现抽象工厂类,负责创建具体的产品对象抽象产品类/接口:定......
  • GIN中间件
        感觉中间件是gin中挺重要的内容,就拿出来单独讲讲吧!什么是中间件?Gin框架允许开发者在处理请求的过程中,加入用户自己的HandlerFunc函数。它适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。也就是我们这里说的中间件。......
  • C# 23种设计模式(5)命令模式(Command Pattern)
    一、命令模式介绍命令模式(CommandPattern)是一种行为设计模式,它将一个请求封装为一个对象,从而允许用户用不同的请求、队列请求、记录请求日志,以及支持可撤销的操作等。命令模式的主要目的是将请求的执行者和请求的接收者解耦,使得请求发送者和接收者之间不必直接交互。 命令......
  • 八大设计模式
    设计模式在日常软件开发中的重要性目录单例模式工厂模式策略模式代理模式观察者模式装饰器模式模板方法模式建造者模式总结单例模式单例模式确保一个类只有一个实例,通常用于管理共享资源,如配置、缓存、线程池等。代码实现:双重检查锁publicclassSingleton{pr......
  • 设计模式应该遵循的原则(软件思想)
    单一职责原则(SingleResponsibilityPrinciple,SRP)定义:一个类应该只有一个引起它变化的原因。也就是说,一个类只负责一项职责。示例与解释:例如,有一个UserService类,它的职责如果包括用户的注册、登录以及用户信息的修改。这就不符合单一职责原则,因为用户注册和登录主要涉及认证......
  • FloEFD单管道水冷板热设计仿真分析与VIP直播答疑
     ......
  • 前端必须掌握的设计模式——适配器模式
    目录定义特点举例说明代码实现前端中的应用总结定义        适配器模式(AdapterPattern)属于结构型设计模式。目的是要使接口不兼容的对象能够相互兼容,比如客户端发送的消息有很多类型,如下图的ABC三种类型,发给系统内部去处理,那么如果有10000种类型,系统的负......