반응형
싱글톤 패턴은 final로 선언된 멤버변수에 미리 인스턴스를 생성해놓는다.
그러나 이 방식은 유연하지 못하다.
스펠링을 체크하는 클래스가 있다. 스펠링을 체크 클래스는 사전에 의존한다. 싱글톤 방식은 멤버변수에 인스턴스를 미리 생성해 놓으므로 사전A, 사전B와 같이 구체적인 클래스에 결합하게 된다. 그렇다고 final을 지우고 setter 함수를 만들어사전A, 사전B를 번갈아 설정 가능하게 한다면 멀티스레드 환경에서 동시성 오류가 발생할 수 있다.
그러므로 final을 유지하면서 환경에 따라 적절한 인스턴스를 유연하게 의존할 수 있는 방법을 선택해야 한다. 그것이 바로, 의존객체 주입이다. 생성자 주입 방식을 사용하면 객체가 생성되는 시점에 멤버변수가 초기화 되므로 final을 유지할 수 있다.
반응형
'Dev > JAVA' 카테고리의 다른 글
[Effective JAVA] 클래스와 멤버의 접근권한을 최소화하라. ( 아이템15 ) (0) | 2024.03.20 |
---|---|
[Effective JAVA] 불필요한 객체 생성을 피하라 ( 아이템6 ) (0) | 2024.03.20 |
[Effective JAVA] 인스턴스화를 막으려거든 private 생성자를 사용하라. ( 아이템 4 ) (0) | 2024.03.20 |
[Effective JAVA] private 생성자나 열거타입으로 싱글턴임을 보증하라. ( 아이템 3 ) (0) | 2024.03.20 |
[Effective JAVA] 생성자 대신 정적 팩터리 메서드를 고려하라. ( 아이템 1 ) (0) | 2024.03.20 |