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(); } }