AOP 编程

1.静态代理

  定义一个接口,用以规定执行方法

    public interface IOrderProcessor
    {
        void Submit();
    }

  实现执行方法

    public class OrderProcessor : IOrderProcessor
    {
        public void Submit()
        {
            Console.WriteLine("提交订单");
        }
    }

  写AOP的拦截方法

    public class OrderProcessorDecorator : IOrderProcessor
    {
        public IOrderProcessor OrderProcessor { get; set; }
        public OrderProcessorDecorator(IOrderProcessor orderprocessor)
        {
            OrderProcessor = orderprocessor;
        }
        public void Submit()
        {
            Console.WriteLine("执行前拦截...");
            OrderProcessor.Submit();
            Console.WriteLine("执行后拦截...");
        }
    }

  调用

            IOrderProcessor orderprocessor = new OrderProcessorDecorator(new OrderProcessor());
            orderprocessor.Submit();

  这里,我们主要是想去执行OrderProcessor.Submit(),用上AOP方法,将其嵌入OrderProcessorDecorator.Submit(),用以对执行前后进行操作(一般可用于写日志)

  对之后新增的方法(如,新加一个OrderProcessor2类),若是要执行其Submit()方法,在调用的时候new 一个参数过去就行

  如下:

    public class OrderProcessor2 : IOrderProcessor
    {
        public void Submit()
        {
            Console.WriteLine("提交订单2");
        }
    }

  调用

            IOrderProcessor orderprocessor = new OrderProcessorDecorator(new OrderProcessor2());
            orderprocessor.Submit();

2.动态代理

原文地址:https://www.cnblogs.com/wskxy/p/10813665.html