2013-04-25 84 views
0

我正在使用java构建客户端服务器应用程序(使用NetBeans).. 在客户端,我有3个类和一个Connection类来处理从/到服务器的数据发送和接收。这3个类使用相同的Connection类,所以我认为创建一个全局连接将会很有用,每次需要发送/接收数据时,这些连接将被不同的类使用。java中的客户端服务器

所以从C#和C++我知道你可以声明一个静态类,但在Java中是不可能宣布静态类..任何想法?

回答

1

引入全局状态往往是被认为是不好的做法,但它肯定有它的用例。所以,你可能想考虑单身模式。 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 ... 
     } 
} 

希望对您有所帮助。

+0

非常感谢!我想过这个实现也:) – Elior 2013-04-25 21:51:20

+0

不客气。并感谢您的快速接受;-) – 2013-04-25 22:05:03

+0

不客气..我只是不太确定singelton ..所以我问这个问题..谢谢无论如何:) – Elior 2013-04-25 22:44:17

1

Java中的类的静态修饰符是隐含的:如果Java中的类中的所有内容都是静态的,那么我认为可以说它是静态类。

实际上,即使Java确实有静态类修饰符,其行为也不同于在每个元素之前放置静态。

只需用static修改所有内容,你就会好的。如果你这样选择,添加一个私人的构造函数,以便它不能被实例化。

+0

好的,谢谢你 – Elior 2013-04-25 21:36:40

1

我无线本地环路建议ü做一个实例,并通过它在埃夫里其他类的构造函数..所以ü无线本地环路有每个类别的相同的实例。它是无线本地环路的组成关系

+1

这不是一个很干净的解决方案。它需要每个方法调用处理服务器/客户端的额外参数。 – Zyerah 2013-04-25 21:38:40