Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns AOP背后的底层设计模式是什么?_Design Patterns - Fatal编程技术网

Design patterns AOP背后的底层设计模式是什么?

Design patterns AOP背后的底层设计模式是什么?,design-patterns,Design Patterns,今天有人问了这个有趣的问题,争论从代理到包装再到装饰 想法 “参数因代理、包装器和装饰器而异。” 对。这就是为什么他们给它起了一个新名字——面向方面编程——而不仅仅是一个面向对象的设计模式 如果它可以简化为单一的设计模式,那么它在创意市场上就不会持续很久 重点是采取更宽泛的观点。对 代理:“为另一个对象提供代理项或占位符以控制对它的访问”* Decorator:“动态地将附加职责附加到对象。”* 适配器(包装器):“将类的接口转换为客户端期望的另一个接口。”* 基于此,对我来说,AOP看起来

今天有人问了这个有趣的问题,争论从代理到包装再到装饰

想法

“参数因代理、包装器和装饰器而异。”

对。这就是为什么他们给它起了一个新名字——面向方面编程——而不仅仅是一个面向对象的设计模式

如果它可以简化为单一的设计模式,那么它在创意市场上就不会持续很久


重点是采取更宽泛的观点。

  • 代理:“为另一个对象提供代理项或占位符以控制对它的访问”*
  • Decorator:“动态地将附加职责附加到对象。”*
  • 适配器(包装器):“将类的接口转换为客户端期望的另一个接口。”*
基于此,对我来说,AOP看起来像是(由Decorator解决的问题的解决方案),而不是代理——当然不是适配器


*来自GoF的书。

我就是这么想的。AOP相当于动态地将额外的责任附加到一个对象上。我相信这取决于你如何实现AOP,正如我所知,你可以将它实现为一个构造函数注入器方法、接口注入器和setter注入器。