当前位置:编程学习 > JAVA >>

面向方面 vs 面向对象 1(介绍)

by Narayanan A.R. June 15, 2005
翻译zhangv (derekzhangv.at.hotmail.com)
原文:http://www.devx.com/Java/Article/28422/0/page/1

 方面vs 面向对象编程:甚么时候使用,该使用哪个?
面向方面编程( AOP)声称它关注的是传统面相对象编程(OOP)不能完全或直接解决的问题.下面将对两种技术进行行行(line-by-line)比较来找出这种说法对在何处.


像大多数开发人员一样,我已经使用OOP进行开发多年了.因此,当我发现AOP强调的很多传统 OOP无法完全或直接解决的问题时,我觉得有必要来研究一下它如何有助于应用程序的开发.比较这两种技术将为我们提供一些在实际应用中很有用的见解.这里我设计了一个案例:一个OOP应用程序,其中在某些方面适合使用 AOP.

本文展示了一个简单的例子.一开始介绍了问题域,然后给出两种解决方案:一种使用OOP,一种使用AOP.后者使用了 JDK1.5,JUnit,和AspectWerkz.最后说明如何编写代码.

在本文最后,你会知道所需知道的一切关于使用AOP的只是,包括它在软件设计中试图要解决的问题.

问题域描述
一个软件公司雇佣一个程序员,指定给他一个业务部门并要求他随时向经理报告.当团队成员完成他们的目标时,经理会给他们相应的积分.公司所需要的方案必须能够增加一个新的雇员并给当前的员工增加积分.为了方便,我们用CSV文件存储数据.


图1 解决方案模型

类Manager(经理)继承自类Employee,包含一个额外的属性,Managing Project.一个部门可能包含很多员工.多个部门构成了公司.暂不考虑公司这样的一个类,因为它在问题域之外.

解决方案设计
以下流程图描述了解决方案设计.


图2 对象之间的交互(增加一个新的员工,指派给他一个部门和经理)
为了简单,本文只关注必须的细节.不过,您也可以深入研究代码来获取一些其他的信息.
[link]http://www.devx.com/assets/sourcecode/13172.zip[/link]
EmployeeServiceTestCase,一个JUnit测试用例类,模拟一个最终用户,创建新员工记录,指派部门和经理.它获取所有可用的部门和经理数据并显示在图形界面上.为了实例化域对象BusinessUnit和Manager,获得的记录将传递给工厂类.之后,通过给EmployeeService传递一个引用来创建一个Employee对象.这个服务类使用EmployeeFactory创建对象,并把这个对象传给EmployeeRepository 来进行持久化操作.
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,