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

最新文章

  1. SpringMVC注入Spring的bean
  2. 08 Servlet
  3. Asp.Net回车键触发Button的OnClick事件解决方案
  4. weblogic远程调试
  5. Thinkphp3.2.3如何加载自定义函数库
  6. struts2视频学习笔记 21(输入校验的流程)
  7. Mysqldump参数大全
  8. select函数的简单使用
  9. 【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
  10. Mac软件记录
  11. Hibernate框架单向多对多关联映射关系
  12. Sagit.Framework For IOS 开发框架入门教程4:注册页布局-被消灭的变量
  13. 基于Docker的ELK日志平台搭建
  14. VS 2017 安装测试
  15. 让SH/BAT脚本定位到运行目录的相对位置,实现其脚本可在任意运行目录下被正确执行
  16. laravel 标签
  17. ESXI 6.5 从载到安装
  18. 第一章: 当前主流的小型嵌入式 GUI
  19. spring 属性文件加载接口---PropertySourceLoader
  20. 建议10:numpy使用基础

热门文章

  1. pycharm 小技巧
  2. XSS漏洞利用案例实验
  3. overflow_auto在flex_1的容器失效
  4. 5、基于EasyExcel的导入导出
  5. Java基础类String学习分析
  6. [深度学习] tf.keras入门2-分类
  7. Win10的OneDrive目录在旧系统里无法访问、删不掉
  8. Ubuntu desktop 文件的书写格式
  9. UEditor采坑指南
  10. 【Oculus Interaction SDK】(三)限制可操作物体的移动 / 旋转