我正在使用java构建客户端服务器应用程序(使用NetBeans).. 在客户端,我有3个类和一个Connection
类来处理从/到服务器的数据发送和接收。这3个类使用相同的Connection类,所以我认为创建一个全局连接将会很有用,每次需要发送/接收数据时,这些连接将被不同的类使用。java中的客户端服务器
所以从C#和C++我知道你可以声明一个静态类,但在Java中是不可能宣布静态类..任何想法?
我正在使用java构建客户端服务器应用程序(使用NetBeans).. 在客户端,我有3个类和一个Connection
类来处理从/到服务器的数据发送和接收。这3个类使用相同的Connection类,所以我认为创建一个全局连接将会很有用,每次需要发送/接收数据时,这些连接将被不同的类使用。java中的客户端服务器
所以从C#和C++我知道你可以声明一个静态类,但在Java中是不可能宣布静态类..任何想法?
引入全局状态往往是被认为是不好的做法,但它肯定有它的用例。所以,你可能想考虑单身模式。 Wikipedia on Singleton
在java中,一个简单的实现看起来是这样的(未测试的代码):
public class MyConnectionClass {
private static final MyConnectionClass SINGLE_INSTANCE = new MyConnectionClass();
private MyConnectionClass() {}
public static MyConnectionClass getInstance() {
return SINGLE_INSTANCE;
}
}
然后你就可以得到只要你需要它使用
MyConnectionClass.getInstance()
单个实例请请注意,该类有一个私有构造函数。这可以确保,你不能使用
MyConnectionClass not_singleton_anymore = new MyConnectionClass()
也可以使用枚举,其中有些人认为在Java中实现单例模式的最佳方法。 从维基百科复制的示例:
public enum Singleton {
INSTANCE;
public void execute (String arg) {
//... perform operation here ...
}
}
希望对您有所帮助。
Java中的类的静态修饰符是隐含的:如果Java中的类中的所有内容都是静态的,那么我认为可以说它是静态类。
实际上,即使Java确实有静态类修饰符,其行为也不同于在每个元素之前放置静态。
只需用static
修改所有内容,你就会好的。如果你这样选择,添加一个私人的构造函数,以便它不能被实例化。
好的,谢谢你 – Elior 2013-04-25 21:36:40
我无线本地环路建议ü做一个实例,并通过它在埃夫里其他类的构造函数..所以ü无线本地环路有每个类别的相同的实例。它是无线本地环路的组成关系
这不是一个很干净的解决方案。它需要每个方法调用处理服务器/客户端的额外参数。 – Zyerah 2013-04-25 21:38:40
非常感谢!我想过这个实现也:) – Elior 2013-04-25 21:51:20
不客气。并感谢您的快速接受;-) – 2013-04-25 22:05:03
不客气..我只是不太确定singelton ..所以我问这个问题..谢谢无论如何:) – Elior 2013-04-25 22:44:17