问题标签 [proxy-pattern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dependency-injection - JAVA EE 代理模式
我一直在读到,当您要求将依赖项注入到 bean 中时,您会被注入到该资源实例的代理。我相信我知道代理是什么,它是一个知道如何将消息转发到另一个实例的实例。它还指出,正是这种模式允许容器为这个托管 bean 提供服务。
我不太明白这一点。为什么需要代理?这是如何实现的?每个bean都有一个代理对象吗?还是我有很多代理转发到一个实例?或者两者都不是?
此外,从 GoF 的书籍设计模式中,我读到您必须提供一个充当占位符的代理类。但是我在 Java EE 中从来没有这样做过,应用程序服务器会在运行时创建代理类吗?
c++ - 具有代理设计模式的预处理器
在代理部分,四人组的设计模式说:
重载成员访问运算符并不是每种代理的好解决方案。一些代理需要准确地知道调用了哪个操作,而重载成员访问运算符在这些情况下不起作用。
[...]
在这种情况下,我们必须手动实现将请求转发给主体的每个代理操作。
[...]
通常,在将请求转发给主体之前,所有操作都会验证请求是否合法、原始对象是否存在等。一遍又一遍地编写这段代码很乏味。所以通常使用预处理器来自动生成它。
好的,哪个预处理器以及如何在 C++ 中使用?
java - 为什么代理模式这么慢?
至少在java中,代理模式有很多开销——我不记得确切的数字,但是当包装微小的方法时,代理需要的时间大约是包装方法的50倍。例如,这就是为什么java.awt.image.BufferedImage.setRGB
&getRGB
真的很慢;大约有三个代理包装实际的byte[]
.
为什么是50次?!为什么代理不只是加倍时间?
编辑:=(
对于 SO 来说,这似乎很常见,我得到了一堆答案,告诉我我的问题是错误的。它不是。查看 BufferedImage 或其他一些真正的代理模式,而不是那些微基准。事实上,如果您必须对 BufferedImage 进行大量像素操作并且您知道它的结构,那么您可以通过手动撤消代理来实现上述巨大的加速;看到这个答案。
哦,这是我 50 倍的来源。正如文章所详述的那样,代理在包装需要很长时间时不会受到明显的惩罚,但如果您包装一个小方法,它们确实会产生重大的痛苦开销。
c++ - 可定制字符串过滤器的设计
假设我有大量的文件名my_dir/my_subdir
,以某种方式格式化:
例如data11_7TeV
是data_type
、00179691
运行号、NTUP_PHOTON
数据格式。
我想写一个接口来做这样的事情:
我想要懒惰的行为,例如在像count
or之类的任何操作之前不必进行真正的过滤get_list
。如果已经完成,我不想重做过滤。我只是在学习一些关于设计模式的东西,我想我可以使用:
AbstractFilter
实现filter*
方法的抽象基类- 工厂从被调用的方法中决定使用哪个装饰器
- 每次我调用
filter
* 方法时,我都会返回一个装饰类,例如:
- 构建正则表达式以过滤文件名的代理,但不进行过滤
我也在学习 jQuery,我正在使用类似的链接机制。
有人可以给我一些提示吗?有什么地方可以解释这样的设计吗?设计必须非常灵活,特别是要处理文件名中的新格式。
design-patterns - 为什么是代理模式是结构模式,为什么是状态模式是行为模式?
为什么代理模式是结构模式,为什么状态模式是行为模式。确定新模式应被视为结构性还是行为性的标准是什么?
java - 这个图案叫什么名字?(答案:远程代理)
考虑一个OriginalClass
在运行时可能可用或不可用的类。OriginalClass
有一个方法doSomething
,如果它的类可用,则应该执行该方法。
解决这个问题的一种方法是创建一个类,该类也有一个doSomething
调用OriginalClass.doSomething
using 反射的方法。像这样的东西:
这里应用的设计模式的名称是什么?我怀疑它是Adapter、Bridge、Facade或Proxy,但我不确定是哪个。
design-patterns - 代理模式和虚拟代理模式的区别
直到现在我才知道代理模式,最近阅读了这篇文章,说虚拟代理基本上用于延迟内存密集型组件的对象创建过程,从而加快应用程序的速度。
但是在阅读了那篇文章之后,看起来代理模式和虚拟代理模式是一回事。我是对的还是我理解错了?
java - 如何实现涉及异步调用的代理模式?
如何实现涉及异步调用的代理模式?
举个例子,如果我想得到一些东西,我会首先检查对象是否驻留在内存中,如果不是,那么我会发出 http 请求来检索它(这是异步调用)。
在 CustomerDAO.getCustomerByName("John");
但是,由于它是异步的,因此会破坏程序的流程。getCustomers 中的任何局部变量也必须传递给回调函数。有什么建议用异步实现代理模式吗?谢谢。
c++ - C++中代理模式中的虚函数
如果我有一个代理模式 ClassA
和代理是 Class PrxA
。问题1
如果我定义了几个函数,那么virtual
那些A
应该被定义为virtual
even inPrxA
吗?
现在如果
我相信代理类也应该继承。
现在假设这些代理类具有以下规则
- 在 c'tor 中实例化原始类
- 将在内部传递给通过不同内部类的任何引用/指针参数
- 要获取代理类的实际 impl(即
A
从PrxA
我们有一个 impl 存储,它将为我们提供A
fromPrxA
和B
fromPrxB
。
现在有一个类C
将 PrxA 作为其 c'tor 中的引用。
`C::C(PrxA& A): pa(A),a(getImpl(PrxA))
正在初始化的 C 类的本地成员。
如果我通过 A,它会很好用。这里没问题。
问题2 当我传递B
给这个类C
时,获得B
impl 的最佳方法是什么(第二个在 C 的 c'tor 中初始化?(注意B
派生自A
)
我可以考虑使用这样的getImpl(A)
东西,但看起来不是一个好的解决方案。
如果我需要传递给以 PrxA 作为参考PrxB
的类,我应该在这里采取什么方法?C
除了铸造还有什么方法吗?
如果我们限制为一个构造函数,这里还有一件有趣的事情,我们可以获得 PrxA 或 PrxB 的引用,需要相应地处理这些引用以在初始化程序中获取 impl。我需要知道一个好的方法。
python - 使用 OOP 和代理模式构建字符串
我发现 SQLAlchemy 构造查询字符串的方式非常有趣,例如:
据我所见,那里应用了某种代理模式。在我的小项目中,我需要使用 OOP 方法进行类似的字符串构造。所以,我试图重构这种行为。
首先,某种对象,许多相似对象之一:
该对象的所有方法都返回self,因此我可以按任意顺序调用它们,并且次数不受限制。
其次,代理对象,如果它不是一个执行方法,它将调用主体的方法,它调用对象来查看结果字符串。
最后:
你对这个实现有什么看法?有没有更好的方法来制作所需数量的类,从而使这样的字符串具有相同的语法?
PS:对不起我的英语,它不是我的主要语言。