当前位置: 首页 > 知识库问答 >
问题:

什么是“装饰师”,它们是如何使用的?

洪伟彦
2023-03-14

我很好奇AngularJS中的装饰师到底是什么。除了AngularJS文档中的一个简介和youtube视频中的一个简短(尽管很有趣)提及之外,对于装饰师来说,网上没有太多信息。

正如棱角分明的人所说,装饰师是:

服务的装饰,允许装饰者拦截服务实例的创建。返回的实例可以是原始实例,也可以是委托给原始实例的新实例。

我真的不知道这意味着什么,我也不知道你为什么要把这个逻辑从服务本身中分离出来。例如,如果我想在不同的条件下返回不同的结果,我只需要将不同的参数传递给相关函数,或者使用另一个共享该私有状态的函数。

我仍然是一个安古拉斯努卜,所以我确信这只是我的无知和/或坏习惯。

共有3个答案

阮梓
2023-03-14

装饰器可以截取由工厂、服务、价值、提供者创建的服务实例,并提供更改某些实例(服务)的选项,这些实例(服务)是不可配置的。

它还可以为测试目的提供模型实例,例如http。

柏正平
2023-03-14

装饰器允许我们分离出跨领域的关注点,并允许服务保留单一责任原则,而无需担心“基础设施”代码。

装饰器的实际用途:

  • 缓存:如果我们有一个进行潜在昂贵HTTP调用的服务,我们可以将该服务包装在缓存装饰器中,该装饰器在进行外部调用之前检查本地存储
  • 调试/跟踪:根据您的开发/生产配置,有一个开关,它用调试或跟踪包装器装饰您的服务
  • 节流:在去抖动包装器中包装频繁触发的调用。例如,允许我们轻松地与速率有限的服务交互

在所有这些情况下,我们将服务中的代码限制在其主要职责范围内。

燕禄
2023-03-14

提供了一个很好的用例。decorator是指当您需要对模块所依赖的某个第三方/上游服务进行较小的“调整”时,同时保持该服务不变(因为您不是该服务的所有者/维护者)。这是在plunkr上的演示。

 类似资料:
  • 问题内容: 我很好奇AngularJS中的装饰器到底是什么。除了AngularJS文档中的简短内容和youtube视频中的简短提及(尽管很有趣)之外,装饰者在线上没有太多信息。 正如Angular所说的那样,装饰器是: 装饰服务,允许装饰者截取服务实例的创建。返回的实例可以是原始实例,也可以是委派给原始实例的新实例。 我真的不知道这 意味着 什么,而且我不确定为什么要将这种逻辑与服务本身分开。例如

  • iOS 6和Xcode 4.5有一项新功能,称为“Unwind Segue”: 展开分段可以允许转换到故事板中的现有场景实例 除了Xcode 4.5发行说明中的这一简短条目外,UIViewController现在似乎有两个新方法: 展开段如何工作以及它们可以用于什么?

  • 我正在研究一些对象的Flux,比如

  • 问题内容: 我一直在听到所有添加到JVM的新功能,这些功能之一是invokedynamic。我想知道它是什么,它如何使Java中的反射式编程更容易或更好? 问题答案: 这是一条新的JVM指令,它允许编译器生成代码,该代码以比以前更宽松的规范来调用方法-如果您知道“ 鸭子类型 ”是什么,invokedynamic基本上允许进行鸭子类型。作为Java程序员,您可以做的事情太多了。但是,如果您是工具创建

  • 问题内容: 我正在研究Swing程序中文本组件的结构。 据我了解,本质上分为视图和模型。该模型是实现的类的实例,该类包含所有文本并提供操作文本的方法,而View则以可视方式呈现文本。 但是我不知道使用an的确切位置,方式和原因。我不确定是否封装(“拥有”)模型(),或者文档是否封装了模型。而且不确定所有这些视图在哪里适合。 有两个问题: 1- 请描述视图之间的关系和在。什么封装了什么,什么与什么相

  • 本文向大家介绍什么是幂等性?它是如何使用的?相关面试题,主要包含被问及什么是幂等性?它是如何使用的?时的应答技巧和注意事项,需要的朋友参考一下 幂等性指的是这样一种场景:您重复执行一项任务,但最终结果保持不变或类似。 幂等性主要用作数据源或远程服务,当它接收一组以上指令时,它只处理一组指令。