== Explicit Initialization == 인스턴스 변수들을 어떻게 디폴트값으로 초기화시켜주는가? ---- 초기화에 대해서는 딱히 정해진 좋은 방법이 없다.(상황에 따라 택일해서 쓰라는 말) 이 패턴은 유연성보다는 가독성을 중시한다. 모든 초기화를 하나의 메소드에 때려넣는 방법이다. 유연성은 떨어질 수 밖에 없다. 변수 하나 추가하자면 ExplicitInitialization 메소드를 수정해야만 한다는 것을 기억하고 있어야 하기 때문이다. ExplicitInitialization은 LazyInitialization보다 비용이 많이 든다. 모든 변수를 인스턴스가 생성될때 초기화 하기 때문이다. ---- 모든 변수들을 명시적으로 설정해주는 initialize메소드를 구현하라. new메세지를 오버라이딩해서 새로운 인스턴스에 맞게 하라. ---- 1000 밀리세컨드마다 실행되는 타이머를 생각해보자. 이 타이머는 얼마나 많은 시간이 지나갔나도 기억하고 있다. {{{~cpp Class Timer { /* ... */ void initialize() { count = 0; period = defaultMillisecondPeriod(); // C++/JAVA에서는 그냥 상수로 써도 될듯하다. } int defaultMillisecondPeriod() { return 1000; } Timer() { initialize(); } }; }}} ---- [SBPPSummary]