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.动态代理