GUI 빌드에서 사용하기 위해 많은 클래스를 만들고 있습니다. 따라서 JavaBean 패턴을 따라야합니다. 이것은 initialising에 관한 나를 위해 몇 가지 문제를 만들었습니다. 종종 상태가 설정되면 실행해야하는 꽤 시간 집약적 인 방법이 있습니다.JavaBean 초기화하기
하나의 접근법은 init() 메소드를 실행해야한다는 것을 문서화하고 사람들이 읽고 존중하기를 바라고 있지만 이는 어색하고 GUIBuilder를 의도 한대로 사용할 수 없다는 것을 의미합니다. 첨가되는.
나는 Bloch의 "Effective Java"를 점검했고, 물론이 포럼과 Dr Google에 질문했지만, 나는 아무 것도 생각해 내지 못했다. 공평하게 말하자면, 그것은 약간의 검색 용어 모음입니다.
다음 간단한 예제 (분명히 간단히 설명 함)는 나의 현재 접근법을 보여줍니다. "isInitialised"변수가 있고 setter가 호출 될 때마다 인스턴스가 무효화됩니다. 계산 된 변수 (또는 다른 복잡한 메소드)에서 getter가 호출 될 때마다 isInitialised 변수가 점검되고 필요한 경우 init() 메소드가 호출됩니다.
이 접근법에는 여러 가지 문제점이 있습니다. 예를 들어, 확장되지 않습니다 (일부는 실제로 확장 될 예정입니다). 또한 여기에 세 가지 변수 만있는 간단한 사례 만 보여줍니다. 진짜 수업에는 더 많은 것이 있습니다. 상황이 엉망이되고있다.
누구나 내가 GUI 빌더에서 예상대로 작동하도록 코드를보다 우아하고 읽기 쉽게 유지할 수있는 다른 방법이나 패턴을 제안 할 수 있습니까?
P. 변경 될 수 있습니다.
내가 포인트를 조금 숨겨 평범 의해
내가 생각
을 편집했다.트릭은 모든 것이 설정된 경우에만 init() 작업을 한 번만 실행하려고합니다. 빌더 패턴을 사용했다면, build() 메소드에 넣으므로 쉽게 할 수 있습니다. 그러나 이것은 GUI 요소에 있으며 JavaBean 패턴에도 있습니다.
위의 코드는 내가 사용하고있는 "패턴"의 평범한 버전입니다. 패턴은 작동하지만, 특히 확장 성 (즉, 단어입니까?)과 변수의 수가 증가함에 따라 앞서 지적한 많은 약점이 있습니다. 간단한 예제는 괜찮아 보이지만 실제 코드는 끔찍한 것처럼 보입니다.
이것은 자바 빈즈 패턴의 단점 일 수 있다고 생각하지만, 패키지에 12 개의 더티 클래스를 만들기 전에 요청할 것입니다.
클래스가 변경 가능하므로 이전에 계산 된 결과가 속성이 변경 될 때 즉시 무효화됩니까? 아니면 계산을 다시 수행하기 전에 다시 설정해야합니까? 즉, 빈이 업데이트 될 때 항상 모든 속성을 설정합니까? – Vegard