일반적으로이 방법에는 아무런 문제가 없습니다. "bad singleton"을 만들기 때문에 정적 클래스에 직접 액세스하지 않아야합니다. (글로벌 변수와 유사)
대신이 클래스를 쿼리 할 모든 객체에이 클래스를 등록하는 일종의 등록 메커니즘을 소개하십시오. 당신은 "좋은 싱글턴"을 가질 것이고 나중에 문제가 없을 것입니다. 그것은, 견고성 지속성에 관해서 물론
public class MyDataClass {
private MyDataClass() { }
public static MyDataClass getInstance() {
if (instance == null) instance = new MyDataClass();
return instance;
}
private static MyDataClass instance = null;
}
public class MyDataProcessor {
public void registerData(MyDataClass data) {
this.data = data;
}
public void process() {
assert(data != null);
data.getData(...);
}
private MyDataClass data;
}
이 방법은 건축 레이어에 결국 몇 가지 문제가있을 수 있습니다 ... 아마도 그것은 캐싱 층으로 데이터베이스를 사용하는 것이 좋습니다 수 있지만 것이라고 매우 의존 사용자의 실제 필요에 따라
+1 데이터베이스는 모두 관리에 관한 것입니다. RDBMS 관련 데이터베이스 관리 시스템이라고는하지 않습니다. 항상 읽기/쓰기 트랜잭션이 없으면 데이터베이스를 메모리 구조로로드하면 속도가 크게 향상 될 수 있습니다. DB가 일주일에 한 번만 업데이트되는 회사에서이 작업을 한 번했습니다. –