面向Agent的编程AOP,是在OO编程上的不足,提出来的概念,但AOP不是万金油,它的提出也只是为了解决某些方面的问题,尤其是是现实世界中面临的问题,可以大量使用AOP。
AOP的一个重要特点,就是编程时不再仅仅只是用对象的思维来考虑问题,而是要更进一步,用Agent智能体的思维去考虑问题。
如果你需要处理一个售票业务,那你就可以构思一个售票员Agent;
如果你需要处理一个订餐业务,那你就可以构思一个服务员Agent;
如果你需要发布一个新闻信息,那你就可以构思一个快递员Agent;
智能体Agent的特点:
1.你无需再去new一些对象,而是可以直接继承一个Agent;
2.你无需再去对象中创建公共方法,而是实现一些Behaviour;
3.你无需再用if else switch case等去判断方法和逻辑的执行条件,只需要实现Agent的状态即可;
据我所知,目前这种编程模式已经在ThinkPHP、Yii等框架中开始实现,不管作者是有意还是无意,方法和类的命名已经向AOP规范在靠拢。
总之,Agent智能体框架大大扩展了原始面向对象的范畴,将面向对象的抽象问题进行了现实化的一种替代和补充,有力的解决了抽象问题与现实逻辑的矛盾
面向Agent的编程早在2009年就提出来了,之所以没能广泛发展和使用,就在于实现一个Agent框架的不易,需要专业知识的积累和Agent标准的制定!
更重要的一点,AOP只是用来补充OOP的不足,解决一些现实世界中复杂的问题,而通常的一些信息管理系统,使用OOP就足够了。
1.我们是否需要自己的一个AOP框架?
这个要看我们使用的业务是否复杂到OOP已经无法胜任的地步,如果OOP可以解决,并且很容易被开发团队理解,则没必要使用AOP。
2.智能体框架是一种智能编程助手吗?(类似于钢铁侠中的助手机器人)
这完全是两个概念,面向智能体编程只是一种编程思想,与我们想要的编程助手是两码事,编程助手是一个实实在在的智能体。
3.我如果想要构建一个编程助手,是否需要AOP框架?
目前来看,AOP框架只是为了程序员方便使用AOP思想,正如Spring之于依赖注入(AOP,虽然缩写一样,但概念完全不一样)一样,所以系统需要怎么来就怎么做吧,AOP并不是必需品!
原文地址:http://blog.csdn.net/zergskj/article/details/42046263