版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、春天框架下的AOP和IOC,主要内容,什么是春天AOP简介AOP解决生产者和消费者问题IOC简介,春天,春天应该为什么而生?AOP是基于一种叫做方面的新的抽象类型。方面与其他抽象类型(如对象和方法)一起使用。它们封装了与系统中包含的其他功能交叉和共存的功能。面向对象编程的最大优势在于它支持关注点的分离。方面最重要的特征之一是它包含了一个定义,该定义指定了它们在程序中的位置,还包含了实现横切关注点的代码。AOP的目的是解决“代码混淆”、“代码分散”和模块化“横切关注点”的问题。焦点:这是一个或一组项目相关人员感兴趣或对他们有重要意义的事情。包括职能、服务质量、政策、制度、机构等方面的关注。核心问
2、题和交叉问题图1是一个在线银行系统的例子。该系统对新客户有一些要求,如信用审查和地址审查。它对现有客户的管理和账户管理也有要求。这些是核心问题,与系统提供网上银行服务的主要目标相关。但是,根据银行安全政策,该系统还具有信息安全要求,以及恢复要求,这些要求可以确保系统出现故障时数据不会丢失。这些都是横切关注点,会影响系统其他需求的实现。图1关注点,建议:实现关注点的代码。方面:定义横切关注点的程序抽象。它包括切入点的定义和与关注点相关的建议。连接点:已执行程序中的事件。在此过程中,将执行与方面相关的建议。切入点:包含在一个方面中的语句,它定义了相关方面建议应该被执行的连接点。编织:通过方面编织器
3、在公式化的连接点组合建议的代码。方面浏览器是编译器的扩展,它处理方面的定义,并定义系统的对象类和方法。然后,编织机通过在指定的连接点包含方面来生成新的程序,并且这些方面被集成,从而在最终系统的正确位置横切关注点。有三种编织方法(来自软件工程):1 .源代码预处理,编织机接收输入的源代码并生成新代码,新代码可以用Java或C语言编译,也可以用标准语言编译器编译。2.连接时间编织,修改编译器以包含一个方面编织机器,如AspectJ,并处理这种语言以将其称为Java字节码。字节码处理可以与Java相结合。3.执行时动态编织是最常见的方法,而且开销也最大。此时,连接点被监控,并且每当由切入点引起的事件
4、发生时,相应的“建议”被集成到执行程序中。代码混淆在传统的编程语言中,核心关注点的实现总是包括额外的代码来实现横切、功能、服务质量和策略关注点。这导致混乱和分散。当系统中的某个模块包含满足不同系统要求的代码时,就会出现混沌状态。如果(numberOfEntries=bufsize)等待(),同步的无效放入(SensorRecord rec)将引发中断的异常。storeback=新传感器记录(rec.sensorld,rec . sensorVaL);back=back 1;如果(back=buf size)back=0;number of entries=number of entries 1
5、;通知();当一个关注点的实现被分散到多个程序组件时,就会发生代码分散。例如,医院记录管理系统由几个组件组成,它们涉及个人信息、药物信息、咨询、医学图像、诊断和治疗的管理。这些可以针对不同类型的诊所配置成不同的形式,并实现系统维护患者记录的核心关注点。不过,医院希望记录一些详细的资料,包括每月入院的病人人数、出院的病人人数、出院的药物数目、求诊的原因等。这些要求的实现需要添加可以使数据匿名(维护患者隐私)的代码,并将它们写入统计数据库。图2给出了患者记录系统中包含的三个类别的示例以及一些管理患者信息的核心方法。红色字体方法是实现统计关注的必要方法。可以看出,统计问题分散在其他核心问题中。图2实
6、现了统计焦点方法的分散化,而AOP解决了生产者-消费者问题,这将它描述为计算机领域中的一个经典且有代表性的同步问题。它描述了两个进程,生产者和消费者,它们共享一个固定大小的公共缓冲区。生产者生成一段数据并将其放入缓冲区,而消费者一次取出这段数据,依此类推。当缓冲区已满时,生产者不能放入数据;当缓冲区为空时,使用者无法获取数据。解决方案:如果缓冲区已满,生产者进程进入睡眠状态;下一次消费者进程取出数据时,它会唤醒生产者进程,生产者进程可以开始将数据放入缓冲区。类似地,当缓冲区为空时,使用者进程进入睡眠状态;下一次生产者进程放入数据时,它会唤醒消费者进程,消费者进程可以开始从缓冲区获取数据。单一缓
7、冲区实现,生产者和消费者只能使用一个缓冲区。生产者一次只能放一个数据,然后等待消费者取出数据。此时,缓冲区已满;当消费者取出数据时,消费者进程将被阻止,并等待生产者放入数据。此时,缓冲区是空的。下面是CubbyHole类的代码,它包含缓冲区,但不包含同步相关的代码。级商品/缓冲私人国际商品;/缓冲区状态,默认值为false,表示缓冲区为空。公共静态布尔可用=false/从缓冲区获取数据。公共同步内部获取(内部标识)系统.输出.打印(消费者#标识获得:商品);退货;/将数据放入缓冲区。公共同步无效看跌期权(int value,int id)商品=价值;系统输出打印(生产商编号:货物);同步控制的代码被抽象为一个平面,如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论