Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个可以同时支持真实对象和;空对象_Java_Reflection_Proxy_Network Programming - Fatal编程技术网

Java 创建一个可以同时支持真实对象和;空对象

Java 创建一个可以同时支持真实对象和;空对象,java,reflection,proxy,network-programming,Java,Reflection,Proxy,Network Programming,我想创建一个工厂,它将创建smack XMPPConnection。 如果无法建立连接,工厂应该返回真正的XMPPConnection或NullObject 然而,smack的XMPPConnection是一个具体的类 它没有实现任何接口,所以我不能使用java动态代理API来代理吸盘。我可以扩展XMPPConnection,但这不是很优雅 还有其他选择吗?请注意,工厂绝不能返回空值 您必须创建自己的接口,基本上复制XMPPConnection,并创建一个实现该接口的适配器,并封装真正的XMPP

我想创建一个工厂,它将创建smack XMPPConnection。 如果无法建立连接,工厂应该返回真正的XMPPConnection或NullObject

然而,smack的XMPPConnection是一个具体的类

它没有实现任何接口,所以我不能使用java动态代理API来代理吸盘。我可以扩展XMPPConnection,但这不是很优雅


还有其他选择吗?请注意,工厂绝不能返回空值

您必须创建自己的接口,基本上复制XMPPConnection,并创建一个实现该接口的适配器,并封装真正的XMPPConnection类。这样你也可以有一个空的xmppconnection。

这是个好主意。这值得付出努力吗?我可以放弃工厂,每次都做一个新的XMPPConnection。如果你只在一个地方创建这个连接,可能不值得,但是如果你在所有地方都使用它,我会说是的。你也可以在简历中添加大量的设计模式:)我统计了3个需要XMPPConnection的地方。请注意,我是在GUICE环境中工作的。因此,工厂正在帮助我将连接注入到不同的类中。我可能会尝试一下,除非看起来工作量太大。不。看起来很简单。现在就开始工作。再次感谢。