简述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的实现方式,感兴趣的朋友可以动手去试试,对比下其中的区别和优劣。
简述AOP编程的更多相关文章
- 【原】iOS动态性(三) Method Swizzling以及AOP编程:在运行时进行代码注入
		概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ... 
- 使用spring方式来实现aop编程
		1:什么是aop? Aspect Oriented Programming 面向切面编程 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译 ... 
- Spring学习笔记之四----基于Annotation的Spring AOP编程
		你能使用@Aspect annotation将某个Java类标注为Aspect,这个Aspect类里的所有公有方法都可以成为一个Advice,Spring提供了5个Annotation去将某个方法标注 ... 
- 聊Javascript中的AOP编程
		Duck punch 我们先不谈AOP编程,先从duck punch编程谈起. 如果你去wikipedia中查找duck punch,你查阅到的应该是monkey patch这个词条.根据解释,Mon ... 
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--AOP编程
		AOP编程在目前来说好像是大家都比较喜欢的.ASP.NET MVC中的Filter就是使用AOP实现的配置器模式.AOP在编码中的应用主要有如下几个方面: 日志记录,跟踪,优化和监控 事务的处理 持久 ... 
- struts2.1笔记03:AOP编程和拦截器概念的简介
		1.AOP编程 AOP编程,也叫面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容.利用A ... 
- Method Swizzling以及AOP编程:在运行时进行代码注入-备用
		概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ... 
- Aop编程--注解与xml的实现
		一.注解方式 1.首先引入spring对于aop编程的jar支持包,spring框架没有的包请自行在网上下载. aopalliance-alpha1.jar aspectjrt.jar aspectj ... 
- AOP编程,spring实现及JDK,CGLIB实现
		什么是AOP? AOP(Aspect-OrientedProgramming,面向方面编程)和OOP(Object-Oriented Programing,面向对象编程)思想不同,两者并非对立关系,前 ... 
随机推荐
- IM 去中心化概念模型与架构设计
			今天打算写写关于 IM 去中心化涉及的架构模型变化和设计思路,去中心化的概念就是说用户的访问不是集中在一个数据中心,这里的去中心是针对数据中心而言的. 站在这个角度而言,实际上并非所有的业务都能做去中 ... 
- CYQ.Data V5 从入门到放弃ORM系列:教程 - Log、SysLogs两个日志类使用
			Log 静态类介绍: Public Static (Shared) Methods GetExceptionMessage 获取异常的内部信息 WriteLogToDB Overloaded. 将日志 ... 
- SVG:textPath深入理解
			SVG的文本可以沿着一条自定义的Path来排布,比如曲线.圆形等等,使用方式如下所示(来源MDN): <svg viewBox="0 0 1000 300" xmlns=&q ... 
- Johnson 全源最短路径算法
			解决单源最短路径问题(Single Source Shortest Paths Problem)的算法包括: Dijkstra 单源最短路径算法:时间复杂度为 O(E + VlogV),要求权值非负: ... 
- 最新Angular2案例rebirth开源
			在过去的几年时间里,Angular1.x显然是非常成功的.但由于最初的架构设计和Web标准的快速发展,逐渐的显现出它的滞后和不适应.这些问题包括性能瓶颈.滞后于极速发展的Web标准.移动化多平台应用, ... 
- 基于DDDLite的权限管理OpenAuth.net 1.0版正式发布
			距离上一篇OpenAuth.net的文章已经有5个多月了,在这段时间里项目得到了很多朋友的认可,开源中国上面的Star数接近300,于是坚定了我做下去的信心.最近稍微清闲点,正式推出1.0版,并在阿里 ... 
- Egret3D研究报告(二)从Unity3D导出场景到Egret3D
			Egret3D暂时没有场编的计划,但是我们知道unity3D是一个很好的场编. 有一些游戏即使不是使用Unity3D开发,也使用Unity3D做场编.这里就不点名了,而且并不在少数. 我们就这么干. ... 
- ASP.NET MVC 描述类型(一)
			ASP.NET MVC 描述类型(一) 前言 在前面的好多篇幅中都有提到过ControllerDescriptor类型,并且在ASP.NET MVC 过滤器(一)篇幅中简单的描述过,今天我们就来讲一下 ... 
- atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx
			atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx 1.1. 版本历史2 2. 设计模式是什么2 2.1. 模式就是在一种场合下对某个问题的一个解决方案.& ... 
- python多行字符串
			Python中如何处理长代码格式化问题,如何提高格式化输出的长字符串的可读性? 当我们需要格式化输出一个很长的字符串的时候,都写在一行显得很难看,而且可读性也很差:当我们使用链式的语法写代码的时候常常 ... 
