zoukankan      html  css  js  c++  java
  • 各种IoC框架下实现AOP

    .Net AOP(五) 各种IoC框架下实现AOP

    利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率
    主要功能
    日志记录,性能统计,安全控制,事务处理,异常处理等等。
    主要意图
    将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码
    一个Castle的实现
    
    首先下载Castle.Windsor.dll
    
    自定义Interceptor
    public class MyInterceptor : IInterceptor
        {
            public void Intercept(IInvocation invocation)
            {
                PreProceed(invocation);
                invocation.Proceed();
                PostProceed(invocation);
            }
            public void PreProceed(IInvocation invocation)
            {
                Console.WriteLine("方法执行前");
            }
    
            public void PostProceed(IInvocation invocation)
            {
                Console.WriteLine("方法执行后");
            }
        }
    
    用户注册接口和实现
    public interface IUserProcessor
        {
            void RegUser(User user);
        }
    
        public class UserProcessor : IUserProcessor
        {
            public virtual void RegUser(User user)
            {
                Console.WriteLine("用户已注册。Name:{0},PassWord:{1}", user.Name, user.PassWord);
            }
        }
    客户端调用
    public class Client
        {
            public static void Run()
            {
                try
                {
                    ProxyGenerator generator = new ProxyGenerator();
                    MyInterceptor interceptor = new MyInterceptor();
                    UserProcessor userprocessor = generator.CreateClassProxy<UserProcessor>(interceptor);
                    User user= new User() { Name = "lee", PassWord = "123123123123" };
                    userprocessor.RegUser(user);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
  • 相关阅读:
    单例模式
    堆排序--leetcode 215
    二叉树--路径问题
    二叉树--前中后序两两结合构建二叉树
    CglibProxy
    JdkProxy
    git config --global http.sslVerify false
    PdfUtil
    idea中创建的文件类型无法识别
    sql优化
  • 原文地址:https://www.cnblogs.com/jameslif/p/6955969.html
Copyright © 2011-2022 走看看