【我们一起写框架】C#的AOP框架

AOP,大家都是听过的,它是一种面向切面的设计模式。

不过AOP虽然是被称为设计模式,但我们应该很少能看到AOP设计的框架。为什么呢?

因为,AOP单独设计的框架几乎是无法使用的。普遍的情况是,AOP要是和其他设计模式结合在一起使用。

所以,AOP虽然是设计模式,但我认为它更接近一种设计元素,是我们在设计框架的作料。

其实AOP的原理就是将公共的部分提取出来,这件事,即便不考虑设计模式,每个开发人员在工作时也是会做的。也就是说,在AOP设计模式被提出来之前,我们就在应用AOP的设计了。

那么,为什么还要单独将AOP拿出来说事呢?

我认为,主要目的应该是要强化切面的重要性。因为设计框架时加入AOP的理念,确实会让框架更加立体。

AOP的应用

AOP既然是一种作料,那么它的应用就是多种多样的;它可以出现在任何场合的。

下面我们举出一个例子,来说明AOP的应用。

----------------------------------------------------------------------------------------------------

我们在开发的时候,通常会有这样的需求。

[将函数的入参和返回值记录到日志中][入参中为负数抛出异常]

当我们面对这样的需求时,通常会将入参和返回值全部传到一个独立的操作函数中,对其进行相应的操作。

这样实现,就是AOP的理念;不过稍微开发者处理时,稍微繁琐了一点,因为每个函数都要处理。

为了减少这种重复操作,让我们一起来编写函数的切面AOP把。

AOP框架的实现

首先,我们一起看下AOP框架应用后的效果。

在下面代码中,可以看到,我们定义了一个AOPTest类,然后调用了他的Test方法,之后传入了一个正数和一个负数,如果函数抛出异常,我们将输出异常的消息。

class Program { static void Main(string[] args) { AOPTest test = new AOPTest(); try { test.Test(518); test.Test(-100); } catch(Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydxwz.html