2017. 12. 21. 17:36ㆍ프로그래밍 언어/Spring Framework
토비의 스프링 3.1 - 싱글톤, 싱글톤 패턴
◈ 자바에서의 싱글톤 패턴
* 클래스 밖에서는 오브젝트를 생성하지 못하도록 생성자를 private으로 만든다.
* 스태틱 팩토리 메소드인 getInstance()를 만들고 이 메소드가 최초로 호출되는 시점에서 한번만 오브젝트가 만들어지게 한다.
* 한번 오브젝트(싱글톤)이 만들어지고 난 후에는 getInstance()메소드를 통해 이미 만들어져 스태틱 필드에 저장해둔 오브젝트를 넘겨준다.
- 싱글톤 패던을 적용한 UserDao-
1 2 3 4 5 6 7 8 9 10 | public class UserDao { private static UserDao INSTANCE; private UserDao(ConnectionMaker connectionMaker) { this.connectionMaker = connectionMaker; } public static synchronized UserDao getlnstance() { if (INSTANCE == null) INSTANCE = new UserDao(???); return INSTANCE; } } | cs |
싱글톤 패던은 생성자를 private으로 제한하기 때문에 자신만이 자시 오브젝트를 만들도록 제한하는 것이다.
객체지향의 장점인 상속과 다형성을 적용할 수 없다.
2. 싱글톤은 테스트하기가 힘들다
만들어지는 방식이 제한적이기 때문에 테스트에서 사용될 때 목 오브젝트 등으로 대체하기가 힘들다.
테스트는 엔터프라이즈 개발의 핵심인데 애플리케이션 코드를 싱글톤으로 만들면 테스트 만드는데 지장이 있는건 큰 단점이다.
3. 싱글톤의 사용은 전역 상태를 만들 수 있기 때문에 바람직 하지 못하다.
싱글톤은 사용하는 클라이언트가 정해져 있지 않다. 싱글톤의 스태틱 메소드를 이용해 언제든지 싱글톤에 쉽게 접근할 수 있기 때문에 자연스럽게 전역상태(global state)로 사용되기 쉽다.
◈ 참조
◈ 오브젝트의 동일성과 동등성의 차이
두 개의 오브젝트가 완전히 같은
동일한(identical) 오브젝트라고 말하는 것 = 동일성(==)
동일한 정보를 담고 있는(equivalent) 오브젝트라고 말하는 것 = 동등성(equals() 메소드)
☞ 오타, 지적 환영합니다.
☞ 키워드 : 자바 오브젝트, 동일성과 동등성, 싱글톤, 싱글톤 패턴의 단점, 스코프, 스프링 빈의 스코프
'프로그래밍 언어 > Spring Framework' 카테고리의 다른 글
[인프런 김영한] 연관관계 매핑 기초 - 양방향 연관관계 (0) | 2021.02.03 |
---|---|
스프링 AOP 용어 , 스프링 네임스페이스 (0) | 2018.01.18 |
객체지향 설계 5대 원칙 (SOLID) (0) | 2017.12.21 |
토비의 스프링 3.1 - DaoFactory 오브젝트 팩토리와 스프링 애플리케이션 컨텍스트의 동작방식 차이 (0) | 2017.12.01 |
토비의 스프링 3.1 - 용어 정리 및 참조 (0) | 2017.12.01 |