반응형
싱글톤 패턴(Singleton Pattern)이란?
싱글톤 패턴(Singleton Pattern)
싱글톤 패턴이란 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 비용이 줄어드는 장점이 있다. 하지만 의존성이 높아진다는(모듈 간의 결합을 강하게 만드는) 단점이 있다.
싱글톤 패턴(Singleton Pattern) 특징
- 생성자에 private 접근 제어자를 지정→객체 생성을 위한 new에 제약을 걸어야 하기 때문이다.
- 단일 객체를 반환할 수 있는 정적 메소드가 필요
- 단일 객체를 참조할 정적 참조 변수가 필요
싱글톤 패턴 예제
예시: 프린터
프린트 하나를 10명이 공유해서 사용한다고 해보자. Printer 클래스를 만들어 프린터를 이용할 때마다 Client프로그램에서 new Printer()를 통해 계속 호출한다면 설정 값이 변경될 위험성도 있고, 비효율적일 것이다. 따라서 인스턴스가 1개만 생성되는 특징을 가진 싱글턴 패턴을 이용하면, 하나의 인스턴스를 메모리에 등록해서 여러 쓰레드가 동시에 해당 인스턴스를 공유하여 사용할 수 있게끔하여, 많은 곳에서 사용하여도 효율이 높게끔 설계할 수 있다.
- 첫 번째로 생성자를 호출할 수 없게 막아야 하기 때문에 생성자를 외부에서 호출할 수 없게 하여야한다.
→해당 클래스의 생성자를 private로 선언 - 두 번째로 자기 자신 프린터에 대한 인스턴스를 하나 만들어 외부에 제공해줄 메서드가 필요하다. 이는 static을 통해 구현하며 이는 전역이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다.
→static: 인스턴스에 속하는 영역이 아니고 클래스 자체에 속한다. 따라서 클래스의 인스턴스를 통하지 않고서도 메서드 실행 및 변수 참조를 할 수 있다.
Printer Class
- 정적 참조 변수 static을 통해 구현
- 객체 생성자인 new를 사용하지 못하도록 생성자를 private로 선언
싱글턴 패턴을 이용하면 하나의 인스턴스만 가리키게 된다.
반응형
'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 프록시 패턴(Proxy Pattern) (0) | 2022.03.23 |
---|---|
[디자인 패턴] 어댑터 패턴(Adapter Pattern) (0) | 2022.03.22 |