Answers:
每当有人告诉您一种软件技术会杀死另一种软件技术或主导整个市场/使用/受众时,请记住以下几点:
一个理智的(动态的但稳定的)生态系统由各种各样的物种组成。
这意味着,任何新的炒作技术都会经历炒作曲线,最终会随着时间和经验的发现而找到特定的目的。
这也意味着,如果需要的话,诸如面向方面的编程之类的极端概念很有用,这意味着,由于隐含的成本,并非总是如此,而且不是非常频繁。
但是它已经有了它的位置,例如OOProgramming,通用编程,函数式编程,过程式编程等。
您是否注意到在现实生活中使用更广泛(并引起争议的流行)和广泛传播的语言是“不纯净的”?那是因为允许几个范例使它们在随时间变化的上下文中变得更加灵活,并且它们填补了更多的使用空间。
OOP不会因为AOP而死。AOP增加了一些价值,但它与OOP完美共存。我认为函数式编程也不会杀死OOP。OOP太适合各种问题领域了,用功能范式代替它是没有意义的。
简短的回答:不,我不这么认为。
更长的答案:根据我对AOP的了解,它本身并不是编程范例(例如,它不能替代OOP),但更多的是,它是一个工具包,可帮助您编写更短的方法,更简单的单一职责类等等。但是它不能代替OOP。
(至少部分)替代或添加到OOP的是函数式编程,它实际上是一个不同的编程范例(尽管它可以与OOP混合,例如在Scala编程语言中)。它更喜欢不变的数据结构和各种奇特的功能,这些特征往往会使OOP开发人员感到沮丧,尤其是在并发方面。
由于OOP在许多情况下被认为是事实上的方法,因此如今谈论得很少。AOP从来没有像任何形式的群众运动那样起步。
虽然OOP当然不是灵丹妙药,但对于AOP可以说是一样的。它支持基于组件的设计,但是在更大的方案中,您的组件是新对象,而组件接口基本上是方法的事务性列表,这不是真正的OOP。
进一步的AOP和基于组件的设计支持Anemic数据模型,该模型比我本人更聪明。
http://martinfowler.com/bliki/AnemicDomainModel.html
(我知道上面的文章很旧,但相关性令人惊讶)
最重要的是,AOP系统可以保留,但也远非完美。没有系统是完美的。