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