2012-09-27 1 views
0

카드 레이아웃을 사용하는 이전 동료와 스윙 애플리케이션을 상속했습니다.자바 카드 레이아웃 많은 정적 변수

약 40 개의 서로 다른 JPanel 카드가 있으며 모두 정적이며 GUI를 구성합니다.

각 정적 패널은 각각 약 50 개의 정적 변수가있는 다른 클래스로, 모두 JPanel의 하위 클래스 인 동일한 수퍼 클래스에서 상속합니다.

가독성을 위해 가능한 한 50 개 이상의 정적 변수와 메소드를 상위 클래스에 추가 할 계획입니다.

내 정적 인 문제는 이러한 모든 정적 변수와 JPanels가 메모리에 있어야한다는 것입니다.

이 방법이 화면 단위 GUI를 작성해야하는지, 아니면보다 효율적인 방법이 있는지 알고 싶습니다.

+0

더 나은 질문은 "왜 변수가 정적입니까?"입니다. – parsifal

+0

좋은 지적입니다. 대답은 일반적으로 아무 이유없이 발생합니다. 나는 방금 살펴보고 많은 것을 고려해 보았고 정적 인 이유가 없습니다. – Quinma

답변

0

손을 떼지 않으면 특히 들리지만 그렇다고 나쁜 디자인이라고 할 수는 없습니다.

큰 데이터 구조가 아닌 한 메모리 사용량과 관련하여 2,000 개의 변수는 많은 메모리가 아닙니다. 얼마나 많은 정적 변수가 리팩토링 될 수 있는지 궁금합니다. 결국, 두 하위 클래스의 static int sFoo;은 메모리에있는 두 개의 변수가되어 다른 용도로 사용할 수 있습니다. 공통 수퍼 클래스에 두는 것은 현재 하나의 변수 만 존재한다는 것을 의미하며, 잠재적으로 여러 목적이 충돌 할 수 있습니다.

또한 효율성은 보는 사람의 눈에 있습니다. 세부 정보를 모른 채 정적 패널이 앱을 초기화하는 가장 효율적인 방법인지 아닌지를 말하기는 어렵습니다. 효율성의 또 다른 유형은 당신의 시간의 사용이다. 문제는 필자가 생각하기에, 앱을 유지 관리하는 데 필요한만큼 패치하는 것이 더 효율적인지, 또는 앱을 길 아래로 유지하는 시간을 줄이기 위해 정면 리팩토링에 많은 시간을 투자하는 것이 더 효율적인지 여부입니다. 누가 알아? 이런 식의 일반적인 철학은 "파산하지 않으면 고치지 마라"입니다.

+0

의견을 보내 주시면 감사하겠습니다. 우아한 방법으로 조언 해 주시겠습니까? 내가 화면으로 화면을 말하면 카드 A에 대한 단계를 완료해야만 카드 C1 또는 C2 등으로 갈 수있는 카드 B에 도착해야한다는 의미입니다. 제 자신의 호기심 때문입니다. 감사합니다. – Quinma

+0

@Quinma - 마법사처럼 들립니다. 사용 가능한 프레임 워크에 관한 정보 (아마도 오래된 것)에 대해서는 [이 스레드] (http://stackoverflow.com/questions/88889/recommend-a-java-wizard-library)를 보거나 웹에서 _java 마법사 프레임 워크를 검색하십시오 _ 최신 정보를 찾으려면. –

+0

완벽. 고맙습니다 – Quinma