这种模式的名称是什么? (回答:远程代理)

时间:2011-06-20 19:08:50

标签: java design-patterns reflection proxy-pattern

考虑一个可能在运行时可用或不可用的类OriginalClassOriginalClass有一个方法doSomething,如果它的类可用,则应该执行该方法。

解决此问题的一种方法是创建一个类,该类还具有使用反射调用doSomething的{​​{1}}方法。像这样:

OriginalClass.doSomething

这里应用的设计模式的名称是什么?我怀疑它是适配器 Bridge Facade 代理,但我不确定是哪一个。

3 个答案:

答案 0 :(得分:2)

我说这是proxy pattern

您已经创建了一个包含血腥反射内容的代理类,并将方法调用委托给另一个对象。

  

代理以其最一般的形式,是一个充当其他东西的接口的类。代理可以与任何东西连接:网络连接,内存中的大对象,文件或其他昂贵或无法复制的资源。

您的模式非常类似于通过网络执行某些方法调用。

答案 1 :(得分:2)

闻起来像是对我的代理。但是你最好不要使用Java's default Dynamic Proxy API吗?

代理的定义:

  

代理强制对象方法调用   通过代理间接发生   对象,作为代理人或代理人   委托底层对象   被代理。代理对象是   通常声明客户端   对象没有迹象表明它们   有一个代理对象实例。

答案 2 :(得分:1)

简单说明:

  • 适配器:当您有两个类(A和B)在语义上等效/相似但具有不同接口时。适配器实现A的接口但代表B,反之亦然,因此A和B可以互换使用
  • Bridge - 通常与整个继承树一起使用(虽然我从未使用过它)
  • Facade - 隐藏简单界面背后的一个或多个类的复杂性
  • 代理 - 与目标对象相同的接口,委托给它,通常用于延迟加载和与目标分离。

因此,您的代码示例看起来像代理