【问题标题】:Javascript (theory) - Can the Proxy pattern be used to add extra functionality?Javascript(理论)——代理模式可以用来添加额外的功能吗?
【发布时间】:2021-04-02 08:18:50
【问题描述】:

我通常使用代理模式来避免 API 调用

const bankAPI = () => ({
   getUserData: () => { name: "Victorio" },
})

function bankAPIProxy = () => {
   const bankAPI = bankAPI();
   const cache = {};
 
   getUserData = () => {
      if(cache.userData) return cache.userData; // Save API Calls
      cache.userData = bankAPI.getUserData();
   }
}

但是,是否可以使用相同的模式来添加额外的功能并仍将其视为代理?

如果 Proxy 不实现它,那又如何呢:

function bankAPIProxy = () => {
   const bankAPI = bankAPI();
 
   getUserData = () => bankAPI.getUserData();

   newMethod = () => "Hello World!";
}

这还是代理吗?

【问题讨论】:

    标签: javascript design-patterns refactoring


    【解决方案1】:

    使用代理模式,因此客户端不必知道他们使用的是真实对象(主体)还是代理对象。这就是代理必须与主题具有相同界面的原因。 这就是为什么不应该有任何额外的方法 - 如果客户端依赖它们,那么如果没有额外的重构就不可能切换到原始对象。

    您可以查看https://en.wikipedia.org/wiki/Proxy_pattern了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      相关资源
      最近更新 更多