您的位置:首页 > 运维架构

动态代理方式实现AOP

2011-01-01 23:56 204 查看
摘要:面向对象的思想强调"一切皆是对象",在面向对象的程序中我们使用真实概念的模型思考问题,使得整个软件系统开发可以像搭建房屋一样有条不紊。然而面向对象也并非完美无缺的,它更注重于对象层次结构方面的东西,对于如何更好的管理对象行为内部结构,还存在着些许不足。那么我们如何使这个问题的得到更完美的解决呢?答案就是AOP。

主要内容:


AOP简述

利用动态代理实现AOP

总结

一、AOP简述

AOP的概念早在上个世纪九十年代初就已经出现了,当时的研究人员通过对面向对象思想局限性的分析研究出了一种新的编程思想来帮助开发者减少代码重复提高开发效率,那就是AOP,Aspect-Oriented Programming。AOP是OOP的补充,是GOF的延续。我们知道设计模式是对于面向对象设计中经验的总结,它孜孜不断追求的就是调用者与被调用者之间的解耦。有了设计模式我们可以更有效的利用面向对象的特性,使得整个软件设计更加灵活、优雅。但是设计模式是基于面向对象的思想而形成的,更多的时候关注的是对象层次的东西,在解决对象行为内部问题方面却有些不足。AOP的出现恰恰就是对面向对象思想做出了完美的补充。

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DanymicProxy
{
class Program
{
static void Main(string[] args)
{
Proxy<MyBusinessLogic>.CreateProxy(new LogInterceptor()).ShowMessage("Hello World!");
Proxy<MyBusinessLogic>.CreateProxy(new LogInterceptor()).Calculate();
}
}
}


运行效果



三、总结:

上面简单的介绍了如何用动态代理的方式实现AOP,主要是帮助大家理解动态代理AOP的大致思路。在实际开发中我们可能更多时候会选择一些AOP的工具(例如Castle中的Aspect#、Spring AOP、AspectDNG等),这些内容(包括静态织入方式实现AOP)我们今后有机会再一块学习。




本作品采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,演绎或用于商业目的。但转载请注明来自崔江涛(KenshinCui),并包含相关链接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: