테이블로 사용하는 클래스가 있습니다. 이 클래스에는 16 개의 행 클래스 배열이 있습니다. 이 행 클래스에는 모두 6 개의 이중 변수가 있습니다. 이러한 행의 값은 한 번 설정되며 절대로 변경되지 않습니다.싱글 톤으로 테이블 클래스 만들기
이 테이블을 싱글 톤으로 만드는 것이 좋습니까? 이점은 메모리 비용이 적게 듭니다.하지만 테이블이 여러 스레드에서 호출되므로 코드를 동기화해야만 조금 더 느린 응용 프로그램이 발생합니다. 그러나이 테이블의 조회는 아마도 실행되는 전체 코드의 아주 작은 부분 일 것입니다.
편집 : 이것이 내 코드입니다. 더 좋은 방법이 있습니까? 아니면 좋은 연습입니까? 이 질문의 권장 사항에 따라 동기화 된 키워드가 제거되었습니다. 이러한 행의
final class HalfTimeTable {
private HalfTimeRow[] table = new HalfTimeRow[16];
private static final HalfTimeTable instance = new HalfTimeTable();
private HalfTimeTable() {
if (instance != null) {
throw new IllegalStateException("Already instantiated");
}
table[0] = new HalfTimeRow(4.0, 1.2599, 0.5050, 1.5, 1.7435, 0.1911);
table[1] = new HalfTimeRow(8.0, 1.0000, 0.6514, 3.0, 1.3838, 0.4295);
//etc
}
@Override
@Deprecated
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
public static HalfTimeTable getInstance() {
return instance;
}
public HalfTimeRow getRow(int rownumber) {
return table[rownumber];
}
}
다소 주제를 벗어나지 만 클래스가 명시 적으로 'Cloneable'인터페이스를 구현하지 않는 한'clone'을 무시하지 않아도됩니다. 또한,'getInstance'는 아마도 정적이어야합니다 :) –
나는 복제에 대해 몰랐습니다. 싱글 톤의 복제를 피하기 위해 그것을 덮어 써야한다는 어딘가를 읽었다. 내 getInstance 물론 정적입니다. 우연히 질문에서 그것을 제거했습니다. 정보는 –