⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 188.txt

📁 SVM(支持向量机)和EM(最大熵)文本分类算法
💻 TXT
字号:
日月光华 -- SE精华区文章阅读
--------------------------------------------------------------------------------
 发信人: jiachong (甲虫), 信区: SE
标  题: [转载]5.从OOP到AOP                           jiachong 
发信站: 日月光华 (2003年04月09日12:48:08 星期三), 站内信件

【 以下文字转载自 SE 讨论区 】
【 原文由 jiachong 所发表 】
从OOP到AOP
    面向对象技术很好地解决了软件系统中角色划分的问题。借助于面向对象的分析、
设计和实现技术,开发者可以将问题领域的“名词”转换成软件系统中的对象,从而很
自然地完成从问题到软件的转换。面向对象的编程方式(OOP)使我们可以把系统看作是
一批相互合作的对象。类允许我们把实现细节隐藏在接口下。多态性为相关概念提供公
共的行为和接口,并允许特定的组件在无需访问基础实现的前提下改变特定行为。
    但是OOP不能很好地处理横越多个模块的行为。例如需要对系统中的某些方法进行日
志记录,这种需要记录方法散布在40多个类中。最直接的办法就是:创建一个超类(或
接口),将日志的功能放在其中,并让所有需要日志功能的类继承这个超类(或接口)
。这样大的修改量,无疑会增加出错的几率,并且加大系统维护的难度。
    因此, 面向方面的编程(A s p e c t - O r i e n t e d Programming,AOP)应
运而生。AOP为开发者提供了一种描述横切关注点的机制,并能够自动将横切关注点织入
到面向对象的软件系统中,从而实现了横切关注点的模块化。通过划分Aspect代码,横
切关注点变得容易处理。开发者可以在编译时更改、插入或除去系统的Aspect,甚至重
用系统的Aspect。更重要的是,AOP可能对软件开发的过程造成根本性的影响。我们可以
想象这样一种情况:OOP只用于表示对象之间的泛化-特化(generalization-specializ
ation)关系(通过继承来表现),而对象之间的横向关联则完全用AOP来表现。这样,
很多给对象之间横向关联增加灵活性的设计模式(例如Decorator、Role Object等)将
不再必要。
    目前AOP已经有了Java语言的实现——AspectJ。这个工具提供了一整套的语法,能
够清楚地描述横切关注点,并将其织入到Java源代码中。织入后的代码仍是标准Java代
码,因此AspectJ不会影响Java的移植能力。关于AspectJ,读者可以在http://www.asp
ectj.org找到更多的信息。

--Amineer整理
--
这个世界总会有点不公正
但是我们总能用心去平衡
※来源:·日月光华 bbs.fudan.edu.cn·FROM:[甲虫窝]
※ 修改:·jiachong 於 03月04日20:51:20 修改本文·[FROM: 218.79.59.90]
--
※ 转载:·日月光华 bbs.fudan.edu.cn·[FROM: 61.170.202.109]

 

--------------------------------------------------------------------------------
[返回上一页] [本讨论区]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -