2013-04-25 4 views
0

자바 (netbeans 사용)에서 클라이언트 - 서버 응용 프로그램을 구축하고 있습니다. 클라이언트 측에서는 서버와의 데이터 송수신을 처리하기 위해 3 클래스와 하나의 Connection 클래스가 있습니다. 3 클래스는 동일한 Connection 클래스를 사용하므로 데이터를 보내거나받을 때마다 다른 클래스에서 사용하는 하나의 전역 연결을 만드는 것이 유용 할 것이라고 생각했습니다.자바 클라이언트 서버

그래서 C# 및 C++에서 정적 클래스를 선언 할 수 있지만 Java에서는 정적 클래스에 대한 선언이 불가능합니다. 어떤 아이디어입니까?

답변

1

은 종종 조성물과 관련 될거다 나쁜 습관이라고 생각하지만 확실히 유스 케이스가 있습니다. 따라서 싱글 톤 패턴에 대해 생각해 볼 수 있습니다. Wikipedia on Singleton

자바에서 간단한 구현이 (테스트되지 않은 코드)처럼 보일 수 :

public class MyConnectionClass { 
    private static final MyConnectionClass SINGLE_INSTANCE = new MyConnectionClass(); 

    private MyConnectionClass() {} 

    public static MyConnectionClass getInstance() { 
     return SINGLE_INSTANCE; 
    } 
} 

당신은 다음

MyConnectionClass.getInstance() 

사용하여 필요할 때마다 싱글 인스턴스를 얻을 수있을 것이다 클래스에는 private 생성자가 있습니다. 이것은 당신이 어떤 자바 싱글 톤을 구현하는 최선의 방법을 고려 열거 형을 사용하는 것 또한 가능하다

MyConnectionClass not_singleton_anymore = new MyConnectionClass() 

을 사용할 수 없다는 것을, 확인합니다. 위키 백과에서 복사 한 예제 :

public enum Singleton { 
     INSTANCE; 
     public void execute (String arg) { 
       //... perform operation here ... 
     } 
} 

희망이 있습니다.

+0

고마워요! 이 구현에 대해서도 생각했습니다. :) – Elior

+0

여러분 환영합니다. 그리고 빠른 수용에 대한 감사합니다 ;-) –

+0

당신은 환영합니다 .. 나는 단지 singelton에 대해 그렇게 확신하지 못했습니다. 그래서 나는이 질문을했습니다. 어쨌든 감사합니다 :) – Elior

1

Java의 클래스에 정적 수정자는 암시 적입니다. Java의 모든 클래스가 정적 인 경우 정적 클래스라고 말할 수 있습니다.

효과적으로 Java에 정적 클래스 수정자가 있어도 각 요소 앞에 정적을 배치하는 것과 다를 바 없습니다.

static으로 모든 것을 수정하면 문제 없습니다. 그렇게 선택하면 개인 생성자를 추가하여 인스턴스화 할 수 없도록 만듭니다.

+0

감사합니다. – Elior

1

제가 너무 u는 모든 클래스의 동일한 인스턴스를거다의 .. 예를 만들고 에브리 다른 클래스의 생성자에 합격 U 제안거다 ..는 글로벌 상태 등장

+1

매우 깨끗한 해결책은 아닙니다. 서버/클라이언트를 처리하는 각 메소드 호출에 대한 추가 인수가 필요합니다. – Zyerah

관련 문제