???????AOP??????????????????????????£???????????????????д????????????????AOP???????MVC???????Filter?????????????????????FilterAttribute??IExceptionFilter??????????????????????????????????AOP???????????????????????
???????AOP????
????????????????????????AOP??Aspect-Oriented Programming?????????????????????????????????????????????????????????????????????????????????????????????????μ??????????????OOP??????????OOP??????????????????????????????????????????????????????????????????????????к??????????????????AOP????????????????????????????з?????????????ú??????????????????????仯???????????????????????????????ɡ?AOP????????棨aspect???????й??????黯??OOP????????????????黯????OOP???????У?????????????????????????????????????????????????????????????????й?????????ó??????????????????????????????????????????????????????
?????????????AOP??????ù???????????????????ù???????????仯??????????????????????????????????????????????ν???????棬????????ù????????????????????????????????????????磬??????????Web??????????е???????????????????????????У?鵱?????????????????y??棬??????????????????????????????涼?д??????????????????????AOP?????ó????AOP?????????????????????????????????????????????????????з????????????????????????????????????????????????????????????????????????????
???????????AOP??????
??????????????????????????????
????1??????ù???????????г?????????????????????????????????????????????
????2??????????????????ù???(????)?????????????????黯????????????????????????????????????????????飬?????????????????????????Щ??ù????????????
????????AOP??????
??????????AOP?????????????????????????????????????????????????????AOP????ι??????
????1?????????
public class Order
{
public int Id { set; get; }
public string Name { set; get; }
public int Count { set; get; }
public double Price { set; get; }
public string Desc { set; get; }
}
public interface IOrderProcessor
{
void Submit(Order order);
}
public class OrderProcessor : IOrderProcessor
{
public void Submit(Order order)
{
Console.WriteLine("??????");
}
}
public class OrderProcessorDecorator : IOrderProcessor
{
public IOrderProcessor OrderProcessor { get; set; }
public OrderProcessorDecorator(IOrderProcessor orderprocessor)
{
OrderProcessor = orderprocessor;
}
public void Submit(Order order)
{
PreProceed(order);
OrderProcessor.Submit(order);
PostProceed(order);
}
public void PreProceed(Order order)
{
Console.WriteLine("????????????ж???????У??....");
if (order.Price 0)
{
Console.WriteLine("????????????????o???????");
}
}
public void PostProceed(Order order)
{
Console.WriteLine("???????????ж?????????......");
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "?????????????????" + order.Name + "?????????" + order.Price);
}
}
???????????
????static void Main(string[] args)
????{
????Order order = new Order() { Id = 1?? Name = "lee"?? Count = 10?? Price = 100.00?? Desc = "????????" };
????IOrderProcessor orderprocessor = new OrderProcessorDecorator(new OrderProcessor());
????orderprocessor.Submit(order);
????Console.ReadLine();
????}
????????????

????????????????????????????????????????????????????????????????????????Ч??У???????????????????????????????????????????????????κθ??????????????????????????????????????????????????з????????з????????????Щ?????????????AOP???????????????????????????????????????????????????????????????????????????????д???????????????????????????