0

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

所以从 C# 和 c++ 我知道你可以声明一个静态类,但是在 Java 中不可能声明静态类..有什么想法吗?

4

3 回答 3

1

引入全局状态通常被认为是不好的做法,但它肯定有它的用例。因此,您可能需要考虑单例模式。单例维基百科

在 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 ...
        }
}

希望有帮助。

于 2013-04-25T21:47:25.923 回答
1

我会建议你创建一个实例并将其传递给每个其他类的构造函数..所以你将为每个类都有相同的实例..它将处于组合关系

于 2013-04-25T21:36:30.460 回答
1

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

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

只需修改所有内容,static您就会没事的。如果您愿意,请添加一个私有构造函数,使其无法被实例化。

于 2013-04-25T21:32:30.033 回答