zoukankan      html  css  js  c++  java
  • 简述AOP编程

    aop是面向切面编程的简称,对业务逻辑中的各个部分切割隔离,使耦合度降到最低,不仅增加了开发效率,还增强了系统的重用性和可维护性。
    个人理解是把面向对象编程和面向函数编程结合在了一起。

    说了这多的好处,那么AOP如何实现呢

    Autofac.Aop里面提供了方便的AOP实现方式 下面我用Autofac.Aop做了个小示例

     public class TestOnMethodBondedAspect : OnMethodBondedAspect
        {
            public override void OnExecuting(Castle.DynamicProxy.IInvocation invocation)
            {
                 Console.WriteLine("Some things running");
            }
        }
    
    public interface IPerson
        {
          
            [TestOnMethodBondedAspect]
            string DoSomeThing(string name);
        }
    
    
     public class Studen : IPerson
        {
            
    
            public string DoSomeThing(string name)
            {
                return "I im" + name+ ", I'm studying";
            }
        }
    

    下面我们把对象注入容器中 并且调用 IPerson的 DoSomeThing

     var builder = new ContainerBuilder();
                builder.RegisterType<Studen>().As<IPerson>()//;
                  .EnableInterfaceInterceptors()
                    .InterceptedBy(typeof(MethodInterceptor));
                builder.Register(x => new MethodInterceptor());
                Container = builder.Build();
                var studen= Container.Resolve<IPerson>();
                Console.WriteLine(studen.DoSomeThing("Yahui"));
    

    执行结果

    Some things running
    I im Yahui, I'm studying

    如果熟悉asp.net mvc 的朋友会感觉aop很像其中的filter,的确很像 aop就是让各个业务之间实行拦截,业务更清晰,将耦合度降到最低

    这里我用autofac作为DI工具因为autofac支持的.NET版本比较新,纯属个人爱好
    Spring.net Castle.Windsor,Unity等也都有AOP的实现方式,感兴趣的朋友可以动手去试试,对比下其中的区别和优劣。

  • 相关阅读:
    安装RF
    python-ssh
    视频下载
    【学时总结】◆学时·V◆ 逆元法
    【赛时总结】 ◇赛时·IV◇ CODE FESTIVAL 2017 Final
    【赛时总结】 ◇赛时·III◇ AtCoder ABC-099
    【软件笔记】 ◆笔记·I◆ 各类冷门函数细解
    【学时总结】 ◆学时·IV◆ 数位DP
    【赛时总结】 ◇赛时·I◇ AtCoder ARC-098
    【学时总结】 ◆学时·III◆ 二分图
  • 原文地址:https://www.cnblogs.com/yahue/p/5271437.html
Copyright © 2011-2022 走看看