Vin*_*C M 27 language-agnostic aop design-patterns decorator
我在接受采访时被问到这个问题.我清楚地知道装饰器模式是什么以及如何使用它.但我在采访中无法思考这个问题.
这是实际问题.
AOP是装饰模式的变体吗?AOP实施与商标装饰模式有何不同?
Yah*_*hia 24
我会说AOP(面向方面编程)本身不是一个模式(因此不是我的POV中的一种装饰模式)......它的实现可以通过一个或多个模式完成(包括使用装饰模式). .. AOP是一种编程范例恕我直言 - 其他范例是例如OOP,函数式编程或程序式编程......
我想在某种程度上说,是的,AOP是装饰器模式的一个实现.
对我来说,最大的不同之处在于它的实施方式以及它的应用方式.
传统装饰器通常是对象,它们要么显式地组合要装饰的对象,要么由底层对象的扩展点启用.
AOP通常以更"声明"的方式指定 - 传统的装饰器是主线代码的一般部分.
传统装饰器通常仅适用于特定类或接口,并且通常在实例级别应用.AOP(通常)可以在"基础级别"围绕基本上任意的代码包装功能 - 行为将扩展到应用方面的所有实例.这使它能够满足其"交叉功能"的要求:它不一定限于像装饰者那样狭窄的范围.
这取决于基础语言,但有些语言比其他语言更灵活.以上内容更多地适用于"静态"语言(例如Java),而不是像Ruby这样的语言,其中看起来像传统装饰器的东西可以应用于单个实例,或者成为类定义的一部分.
| 归档时间: |
|
| 查看次数: |
4927 次 |
| 最近记录: |