考虑一个可能在运行时可用或不可用的类OriginalClass
。 OriginalClass
有一个方法doSomething
,如果它的类可用,则应该执行该方法。
解决此问题的一种方法是创建一个类,该类还具有使用反射调用doSomething
的{{1}}方法。像这样:
OriginalClass.doSomething
这里应用的设计模式的名称是什么?我怀疑它是适配器, Bridge , Facade 或代理,但我不确定是哪一个。
答案 0 :(得分:2)
我说这是proxy pattern。
您已经创建了一个包含血腥反射内容的代理类,并将方法调用委托给另一个对象。
代理以其最一般的形式,是一个充当其他东西的接口的类。代理可以与任何东西连接:网络连接,内存中的大对象,文件或其他昂贵或无法复制的资源。
您的模式非常类似于通过网络执行某些方法调用。
答案 1 :(得分:2)
闻起来像是对我的代理。但是你最好不要使用Java's default Dynamic Proxy API吗?
代理的定义:
代理强制对象方法调用 通过代理间接发生 对象,作为代理人或代理人 委托底层对象 被代理。代理对象是 通常声明客户端 对象没有迹象表明它们 有一个代理对象实例。
答案 2 :(得分:1)
简单说明:
因此,您的代码示例看起来像代理。