쌍용 강북 교육센터 국비학원 Day 38일차
싱글톤 패턴(Singleton pattern)
프로그래밍 세계에 OOP 의 개념이 생기면서 객체 자체에 대한 많은 연구와 패턴들이 생겨났다. Singleton Pattern은 인스턴스가 사용될 때에 매번 새로운 인스턴스를 만들어 내는 것이 아니라, 동일 인스턴스 1개만을 사용하도록 하는 것이다.
소프트웨어 디자인 패턴에서 싱글턴 패턴을 따르는 클래스란 ?
생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나뿐이고, 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴해준다.
이와 같은 디자인 유형을 가지는 클래스를 싱글톤 패턴을 따르는 클래스라고 한다.
그러므로 싱글톤 패턴을 따르는 클래스는 인스턴스가 사용될 때에 매번 새로운 인스턴스를 만들어 내는 것이 아니라, 최초에 생성되어진 동일 인스턴스 1개만을 사용하도록 하는 것이다.
프로그램상에서 하나만 사용되어야 하는 객체를 만들때 매우 유용하다. 예를 들어 동일한 커넥션 객체 (Connection - 자바와 오라클을 연결하는 객체)를 만들때 사용하면 된다. Singleton 패턴을 이용하면, 하나의 커넥션 객체를 만들어서 여러 DAO 에서 사용할 수 있게 된다. (주로 데이터베이스 연결 모듈에 많이 사용된다.)
싱글톤패턴 코드 작성할때 중요한 3가지
- private 변수로 자기 자신의 클래스 인스턴스를 가지도록 해야 한다.
- 접근제한자가 private 이므로 외부 클래스에서는 직접적으로 접근이 불가하다.
- static 변수로 지정하여 SingletonNumber 클래스를 사용할 때, 객체생성은 딱 1번만 생성되도록 해야 한다.



다음은 이 싱글톤패턴을 사용하는 Main Class 이다.

메소드 a, b, c 는 지금까지 해오던 객체를 그때마다 계속 생성해서 사용하는 메소드이다.

메소드 d, e, f 는 위의 SingletonNumber 객체를 싱글톤패턴을 따르는 클래스이다.

위의 결과처럼 객체를 계속 생성해 같은메소드를 사용할경우 객체의 주소도 다 다르고 값 또한 계속 초기화 되어진다. 반면 싱글톤패턴은 객체의 주소도 동일하고 값 또한 이어지는걸 볼 수 있다.
싱글톤 패턴의 사용하는 이유
위와 같이 싱글톤패턴을 사용하는 이유는 메모리 측면이다. 최초 한번의 new 연산자를 통해서 고정된 메모리 영역을 사용하기 때문에 추후 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다.
뿐만 아니라 이미 생성된 인스턴스를 활용하니 속도 측면에서도 이점이 있다고 볼 수 있다.
또 다른 이점은 다른 클래스 간에 데이터 공유가 쉽다는 것이다.
싱글톤 인스턴스가 전역으로 사용되는 인스턴스이기 때문에 다른 클래스의 인스턴스들이 접근하여 사용할 수 있다. 하지만 여러 클래스의 인스턴스에서 싱글톤 인스턴스의 데이터에 동시에 접근하게 되면 동시성 문제가 발생할 수 있으니 이점을 유의해서 설계하는 것이 좋다.
오늘은 여기까지.
'Java' 카테고리의 다른 글
| 쌍용강북교육센터 국비 학원 Day 40일차 JDBC (게시판 만들기) (0) | 2023.02.28 |
|---|---|
| 쌍용강북교육센터 국비 학원 Day 39일차 JDBC (Transaction - 트랜잭션) (0) | 2023.02.27 |
| 쌍용강북교육센터 국비 학원 Day 37일차 JDBC (오라클DB -> 자바Exception, DAO, DTO) (0) | 2023.02.23 |
| 쌍용강북교육센터 국비 학원 Day 36일차 JDBC (PreparedStatement, CallableStatement) (0) | 2023.02.22 |
| 쌍용강북교육센터 국비 학원 Day 35일차 JDBC (0) | 2023.02.22 |