Done
Learned
Singleton
- 코드리뷰에 싱글톤 이야기가 나와서 아주 짧게 개념만 학습했다.
- 클래스당 단 하나의 인스턴스만 생성하도록 제한해주는 것
public final class ClassSingleton {
private static ClassSingleton INSTANCE;
private String info = "Initial info class";
private ClassSingleton() {
}
public static ClassSingleton getInstance() {
if(INSTANCE == null) {
INSTANCE = new ClassSingleton();
}
return INSTANCE;
}
}
public enum EnumSingleton {
INSTANCE("Initial class info");
private String info;
private EnumSingleton(String info) {
this.info = info;
}
public EnumSingleton getInstance() {
return INSTANCE;
}
}
기타
git
Good
- 피드백 받은 부분을 이해해보려고 노력하고 미션에 적용해 보려고 했다.
Bad
Feeling
- 미션5 진행 속도가 느리다.
- 코드리뷰와 미션을 함께 적용하다가 책임을 분산하기 위해 클래스를 분리하는 개념을 이해하는 데 시간이 오래 걸렸다
- A클래스와 AHelper 클래스가 있다고 할 때, 경우에 따라 AHelper의 객체를 사용하기도 하고 static으로 이용하기도 한다.
- AHelper의 객체를 사용한다고 했을 때, 예를 들어, A클래스에는 ArrayList obj가 선언되어 있고, AHelper가 ArrayList을 인스턴스 변수로 갖고 있다고 하면
- obj는 ArrayList과 관련 메소드 및 멤버변수를 갖는 Ahelper 객체를 배열로 받게 된다
- 이는 각각의 ArrayList에게 행해지던 일련의 작업의 책임이 AHelper로 넘어가게 된다.
- 그런데 여전히 헷갈리는 건 A클래스에 ArrayList<ArrayList>을 선언하고 관련 메소드들만 static으로 AHelper에게 넘겨주면 그 구분이 애매해져서 이렇게 하는 것인가? 아니면 static 변수가 많아져 메모리 부담이 커져서일까? 아직 잘 모르겠다.