【C#高级语法特性锦集】
C#使用装饰器模式实现AOP,静态代理
记录一下使用装饰器模式简单实现一下AOP(面向切向)的简单入门Demo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyAOP
{
/// <summary>
/// 装饰器模式实现静态代理
/// AOP 在方法前后增加自定义的方法
///
/// 简单的proxy静态AOP
/// </summary>
public class DecoratorAOP
{
public static void Show()
{
User user = new User()
{
Name = "老六",
Password = "123123123123"
};
IUserProcessor processor = new UserProcessor();
processor.RegUser(user);//没有使用AOP
Console.WriteLine("***************");
processor = new UserProcessorDecorator(processor);
processor.RegUser(user);//使用了AOP
}
public interface IUserProcessor
{
void RegUser(User user);
}
public class UserProcessor : IUserProcessor
{
public void RegUser(User user)
{
Console.WriteLine("用户已注册。Name:{0},PassWord:{1}", user.Name, user.Password);
}
}
/// <summary>
/// 装饰器的模式去提供一个AOP功能
/// </summary>
public class UserProcessorDecorator : IUserProcessor
{
private IUserProcessor UserProcessor { get; set; }
public UserProcessorDecorator(IUserProcessor userprocessor)
{
UserProcessor = userprocessor;
}
public void RegUser(User user)
{
BeforeProceed(user);
this.UserProcessor.RegUser(user);
AfterProceed(user);
}
/// <summary>
/// 业务逻辑之前
/// </summary>
/// <param name="user"></param>
public void BeforeProceed(User user)
{
Console.WriteLine("方法执行前");
}
/// <summary>
/// 业务逻辑之后
/// </summary>
/// <param name="user"></param>
public void AfterProceed(User user)
{
Console.WriteLine("方法执行后");
}
}
}
}